
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: int do_body(X509 * * xret, EVP_PKEY * pkey, X509 * x509, EVP_MD * dgst,
   stack_st_OPENSSL_STRING * sigopts, stack_st_CONF_VALUE * policy, CA_DB * db, BIGNUM * serial,
   char * subj, ulong chtype, int multirdn, int email_dn, char * startdate, char * enddate, long
   days, int batch, int verbose, X509_REQ * req, char * ext_sect, CONF * lconf, ulong certopt, ulong
   nameopt, int default_op, int ext_copy, int selfsign, CA_DB * db) */

int __regparm3
do_body(X509 **xret,EVP_PKEY *pkey,X509 *x509,EVP_MD *dgst,stack_st_OPENSSL_STRING *sigopts,
       stack_st_CONF_VALUE *policy,CA_DB *db,BIGNUM *serial,char *subj,ulong chtype,int multirdn,
       int email_dn,char *startdate,char *enddate,long days,int batch,int verbose,X509_REQ *req,
       char *ext_sect,CONF *lconf,ulong certopt,ulong nameopt,int default_op,int ext_copy,
       int selfsign,CA_DB *db_1)

{
  uchar uVar1;
  char cVar2;
  int iVar3;
  BIO *pBVar4;
  CONF *conf;
  X509_NAME *pXVar5;
  int iVar6;
  X509_NAME_ENTRY *pXVar7;
  ASN1_STRING *pAVar8;
  ASN1_OBJECT *o;
  char *pcVar9;
  byte *pbVar10;
  X509 *pXVar11;
  undefined4 uVar12;
  EVP_PKEY *pEVar13;
  OPENSSL_STRING *ppcVar14;
  ASN1_TIME *a;
  char *pcVar15;
  uint uVar16;
  int iVar17;
  int loc;
  uchar *puVar18;
  X509 *pXVar19;
  OPENSSL_STRING *extraout_ECX;
  char *pcVar20;
  undefined4 extraout_EDX;
  undefined4 extraout_EDX_00;
  undefined4 extraout_EDX_01;
  undefined4 extraout_EDX_02;
  byte *pbVar21;
  undefined4 extraout_EDX_03;
  undefined4 extraout_EDX_04;
  undefined4 extraout_EDX_05;
  uchar *puVar22;
  byte *pbVar23;
  byte *pbVar24;
  X509V3_CTX *ctx;
  ASN1_INTEGER *pAVar25;
  byte *pbVar26;
  OPENSSL_STRING *ppcVar27;
  OPENSSL_STRING *ppcVar28;
  int in_GS_OFFSET;
  undefined1 uVar29;
  bool bVar30;
  bool bVar31;
  undefined1 uVar32;
  bool bVar33;
  byte bVar34;
  OPENSSL_STRING pcVar35;
  undefined4 uVar36;
  OPENSSL_STRING *ppcVar37;
  X509 *x;
  undefined1 auStack_ec [8];
  EVP_PKEY *local_e4;
  X509 *local_e0;
  X509_NAME *local_dc;
  X509_NAME *local_d8;
  BIO **local_d4;
  char *local_d0;
  stack_st_CONF_VALUE *local_cc;
  ASN1_STRING *local_c8;
  ASN1_STRING *local_c4;
  byte *local_c0;
  byte *local_bc;
  X509_NAME *local_b8;
  X509V3_CTX *local_b4;
  X509 **local_b0;
  X509 *local_ac;
  CONF *local_a8;
  BIGNUM *local_a4;
  BIGNUM *local_a0;
  EVP_PKEY *local_9c;
  char *local_98;
  EVP_MD *local_94;
  stack_st_OPENSSL_STRING *local_90;
  CA_DB *local_8c;
  char *local_88;
  CONF *local_84;
  byte *local_80;
  int tdays;
  OPENSSL_STRING row [6];
  undefined1 local_3c [3];
  char buf [25];
  
  bVar34 = 0;
  local_94 = dgst;
  local_90 = sigopts;
  local_88 = enddate;
  local_cc = policy;
  local_98 = (char *)days;
  local_8c = db;
  local_b4 = (X509V3_CTX *)ext_sect;
  local_a4 = serial;
  local_a8 = lconf;
  local_a0 = (BIGNUM *)subj;
  local_84 = (CONF *)certopt;
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  row[0] = (OPENSSL_STRING)0x0;
  row[1] = (OPENSSL_STRING)0x0;
  row[2] = (OPENSSL_STRING)0x0;
  row[3] = (OPENSSL_STRING)0x0;
  row[4] = (OPENSSL_STRING)0x0;
  row[5] = (OPENSSL_STRING)0x0;
  local_b0 = xret;
  local_ac = (X509 *)x509;
  local_9c = (EVP_PKEY *)pkey;
  if (chtype == 0) {
LAB_0002dcb3:
    if (ext_copy != 0) {
      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");
    }
    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);
    local_d8 = (X509_NAME *)&bio_err;
    local_e4 = (EVP_PKEY *)0x0;
    while (iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6) {
      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);
      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);
      o = X509_NAME_ENTRY_get_object(pXVar7);
      iVar6 = OBJ_obj2nid(o);
      if (msie_hack != 0) {
        iVar17 = pAVar8->type;
        if (iVar17 == 0x1c) {
          ASN1_UNIVERSALSTRING_to_string(pAVar8);
          iVar17 = pAVar8->type;
        }
        if (iVar17 == 0x16) {
          if (iVar6 == 0x30) goto LAB_0002dfb4;
          pAVar8->type = 0x14;
        }
        else {
          if (iVar6 != 0x30) goto LAB_0002dd0e;
          if (iVar17 == 0x13) {
            pAVar8->type = 0x16;
          }
LAB_0002dfb4:
          if (startdate == (char *)0x0) goto LAB_0002dd2b;
          if (pAVar8->type != 0x16) goto LAB_0002dfcf;
        }
LAB_0002ddaf:
        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);
        if (iVar6 == 0x14) {
          if (pAVar8->type == 0x14) goto LAB_0002dd1c;
        }
        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {
LAB_0002dd1c:
          if (ext_copy != 0) {
            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);
            pcVar20 = buf;
            if (0 < 0x16 - iVar6) {
              pcVar20 = buf + (0x16 - iVar6);
              pcVar15 = buf;
              do {
                pcVar9 = pcVar15 + 1;
                *pcVar15 = ' ';
                pcVar15 = pcVar9;
              } while (pcVar20 != pcVar9);
            }
            pcVar20[0] = ':';
            pcVar20[1] = '\0';
            BIO_puts(*(BIO **)local_d8,buf);
            iVar6 = pAVar8->type;
            if (iVar6 == 0x13) {
              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");
            }
            else {
              pBVar4 = *(BIO **)local_d8;
              if (iVar6 == 0x14) {
                BIO_printf(pBVar4,"T61STRING:\'");
              }
              else if (iVar6 == 0x16) {
                BIO_printf(pBVar4,"IA5STRING:\'");
              }
              else if (iVar6 == 0x1c) {
                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");
              }
              else {
                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);
              }
            }
            local_d4 = (BIO **)&DAT_0007e595;
            puVar22 = pAVar8->data;
            local_d0 = "\\0x%02X";
            puVar18 = puVar22 + pAVar8->length;
            if (0 < pAVar8->length) {
              do {
                while( true ) {
                  uVar1 = *puVar22;
                  local_e0 = (X509 *)(int)(char)uVar1;
                  pBVar4 = *(BIO **)local_d8;
                  if (0x5e < (byte)(uVar1 - 0x20)) break;
                  puVar22 = puVar22 + 1;
                  BIO_printf(pBVar4,"%c",local_e0);
                  if (puVar22 == puVar18) goto LAB_0002df49;
                }
                if ((char)uVar1 < '\0') {
                  BIO_printf(pBVar4,local_d0,local_e0);
                }
                else {
                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));
                }
                puVar22 = puVar22 + 1;
              } while (puVar22 != puVar18);
            }
LAB_0002df49:
            BIO_printf(*(BIO **)local_d8,"\'\n");
          }
          goto LAB_0002dd2b;
        }
        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";
LAB_0002dde4:
        BIO_printf((BIO *)bio_err,pcVar20);
        local_b8 = (X509_NAME *)0x0;
        goto LAB_0002de05;
      }
      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {
        iVar17 = pAVar8->type;
        if (iVar6 != 0x30) {
LAB_0002dd0e:
          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;
          goto LAB_0002dd1c;
        }
        if (iVar17 == 0x16) goto LAB_0002ddaf;
LAB_0002dfcf:
        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";
        goto LAB_0002dde4;
      }
LAB_0002dd2b:
      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);
    }
    local_b8 = X509_NAME_new();
    if (local_b8 == (X509_NAME *)0x0) {
      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");
LAB_0002de05:
      local_e0 = (X509 *)0x0;
      local_d8 = (X509_NAME *)0x0;
      pAVar25 = (ASN1_INTEGER *)0x0;
      local_e4 = (EVP_PKEY *)0xffffffff;
    }
    else {
      if (db_1 == (CA_DB *)0x0) {
        pXVar5 = X509_get_subject_name(local_ac);
        local_d8 = X509_NAME_dup(pXVar5);
      }
      else {
        local_d8 = X509_NAME_dup(local_dc);
      }
      if (local_d8 == (X509_NAME *)0x0) {
LAB_0002e2c6:
        local_e0 = (X509 *)0x0;
        pAVar25 = (ASN1_INTEGER *)0x0;
        local_e4 = (EVP_PKEY *)0xffffffff;
      }
      else {
        local_c0 = (byte *)0x7e599;
        local_d4 = (BIO **)0x0;
        local_c4 = (ASN1_STRING *)0x0;
        local_c8 = (ASN1_STRING *)0x0;
        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {
          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);
          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));
          if (iVar6 == 0) {
            pbVar21 = *(byte **)(local_d0 + 4);
            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";
            goto LAB_0002e2b5;
          }
          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);
          local_bc = (byte *)0x7e5a2;
          pbVar24 = (byte *)0xffffffff;
LAB_0002e14e:
          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ
                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);
          if (-1 < (int)pbVar10) {
            uVar29 = auStack_ec < (undefined1 *)0x8;
            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;
            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);
            iVar6 = 9;
            pbVar21 = *(byte **)(local_d0 + 8);
            pbVar24 = pbVar21;
            pbVar26 = local_c0;
            do {
              if (iVar6 == 0) break;
              iVar6 = iVar6 + -1;
              uVar29 = *pbVar24 < *pbVar26;
              uVar32 = *pbVar24 == *pbVar26;
              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;
              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;
            } while ((bool)uVar32);
            bVar30 = false;
            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;
            local_e0 = (X509 *)pXVar7;
            if (bVar33) goto joined_r0x0002efd1;
            iVar6 = 9;
            pbVar24 = pbVar21;
            pbVar26 = local_bc;
            do {
              pbVar23 = pbVar24;
              if (iVar6 == 0) break;
              iVar6 = iVar6 + -1;
              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;
              bVar30 = *pbVar24 < *pbVar26;
              bVar33 = *pbVar24 == *pbVar26;
              pbVar24 = pbVar23;
              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;
            } while (bVar33);
            if ((!bVar30 && !bVar33) == bVar30) {
              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;
              goto LAB_0002e236;
            }
            local_80 = pbVar21;
            iVar6 = strcmp((char *)pbVar21,"match");
            pbVar21 = local_80;
            if (iVar6 == 0) {
              if (local_e0 != (X509 *)0x0) {
                iVar6 = -1;
                local_80 = pbVar10;
                do {
                  pEVar13 = local_e4;
                  iVar17 = iVar6;
                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);
                  if ((loc < 0) && (iVar6 == -1)) {
                    pbVar21 = *(byte **)(local_d0 + 4);
                    pcVar20 = 
                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"
                    ;
                    goto LAB_0002e2b5;
                  }
                  if (loc < 0) {
                    puVar18 = "NULL";
                    if (local_c8 != (ASN1_STRING *)0x0) {
                      puVar18 = local_c8->data;
                    }
                    puVar22 = "NULL";
                    if (local_c4 != (ASN1_STRING *)0x0) {
                      puVar22 = local_c4->data;
                    }
                    BIO_printf((BIO *)bio_err,
                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"
                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23
                              );
                    goto LAB_0002e2c6;
                  }
                  pXVar7 = X509_NAME_get_entry(local_d8,loc);
                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);
                  local_c8 = pAVar8;
                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);
                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);
                  iVar6 = loc;
                  pbVar10 = local_80;
                } while (iVar17 != 0);
                goto joined_r0x0002efd1;
              }
              goto LAB_0002e2a5;
            }
            goto LAB_0002e921;
          }
          bVar30 = pbVar24 != (byte *)0xffffffff;
          bVar33 = pbVar24 == (byte *)0xffffffff;
          if (bVar33) {
            iVar6 = 9;
            pbVar21 = *(byte **)(local_d0 + 8);
            pbVar24 = pbVar21;
            pbVar10 = local_c0;
            do {
              if (iVar6 == 0) break;
              iVar6 = iVar6 + -1;
              bVar30 = *pbVar24 < *pbVar10;
              bVar33 = *pbVar24 == *pbVar10;
              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;
              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;
            } while (bVar33);
            bVar31 = false;
            bVar30 = (!bVar30 && !bVar33) == bVar30;
            if (!bVar30) {
              iVar6 = 9;
              pbVar24 = pbVar21;
              pbVar10 = (byte *)"supplied";
              goto code_r0x0002e27e;
            }
          }
          local_d4 = (BIO **)((int)local_d4 + 1);
        }
        if (preserve != 0) {
          X509_NAME_free(local_b8);
          local_b8 = X509_NAME_dup(local_dc);
          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;
        }
        if (req != (X509_REQ *)0x0) {
          BIO_printf((BIO *)bio_err,
                     "Everything appears to be ok, creating and signing the certificate\n");
        }
        pXVar11 = X509_new();
        local_e0 = pXVar11;
        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;
        pAVar25 = X509_get_serialNumber(pXVar11);
        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);
        if (pAVar25 != (ASN1_INTEGER *)0x0) {
          if (db_1 == (CA_DB *)0x0) {
            pXVar5 = X509_get_subject_name(local_ac);
            iVar6 = X509_set_issuer_name(local_e0,pXVar5);
          }
          else {
            iVar6 = X509_set_issuer_name(pXVar11,local_b8);
          }
          if ((iVar6 != 0) &&
             (pXVar11 = (X509 *)batch,
             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {
            if (local_98 != (char *)0x0) {
              uVar12 = X509_get0_notAfter(local_e0);
              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);
              batch = tdays;
              if (iVar6 == 0) goto LAB_0002e84a;
            }
            x = local_e0;
            iVar6 = X509_set_subject_name(local_e0,local_b8);
            ctx = local_b4;
            if (iVar6 != 0) {
              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);
              iVar6 = X509_set_pubkey(x,pEVar13);
              if (iVar6 != 0) {
                if (local_a8 != (CONF *)0x0) {
                  if (db_1 == (CA_DB *)0x0) {
                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,
                                   (X509_CRL *)0x0,0);
                  }
                  else {
                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);
                  }
                  conf = local_84;
                  ctx = (X509V3_CTX *)&tdays;
                  if (extconf == (CONF *)0x0) {
                    X509V3_set_nconf(ctx,local_84);
                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);
                    if (pXVar19 == (X509 *)0x0) {
                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,
                                 extraout_EDX_05);
                      ERR_print_errors((BIO *)bio_err);
                      goto LAB_0002e84a;
                    }
                    pXVar11 = x;
                    if (req != (X509_REQ *)0x0) {
                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",
                                 pXVar19,pXVar19);
                      pXVar11 = pXVar19;
                    }
                  }
                  else if (req == (X509_REQ *)0x0) {
                    X509V3_set_nconf(ctx,(CONF *)extconf);
                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);
                    if (iVar6 == 0) {
                      local_e4 = (EVP_PKEY *)&bio_err;
                      iVar6 = 0;
LAB_0002e824:
                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,
                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);
                      ERR_print_errors((BIO *)local_e4->type);
                      goto LAB_0002e84a;
                    }
                  }
                  else {
                    local_e4 = (EVP_PKEY *)&bio_err;
                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);
                    X509V3_set_nconf(ctx,(CONF *)extconf);
                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);
                    if (iVar6 == 0) goto LAB_0002e824;
                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",
                               db_1,db_1);
                    pXVar11 = (X509 *)db_1;
                  }
                }
                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);
                if (iVar6 == 0) {
                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,
                             pXVar11);
                  ERR_print_errors((BIO *)bio_err);
LAB_0002e94f:
                  pAVar25 = (ASN1_INTEGER *)0x0;
                  local_e4 = (EVP_PKEY *)0xffffffff;
                  goto LAB_0002e2e5;
                }
                iVar6 = X509_get0_extensions(local_e0);
                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&
                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;
                if (req != (X509_REQ *)0x0) {
                  BIO_printf((BIO *)bio_err,
                             "The subject name appears to be ok, checking data base for clashes\n",
                             req,req);
                }
                if (startdate == (char *)0x0) {
                  ctx = (X509V3_CTX *)0xffffffff;
                  pXVar5 = X509_NAME_dup(local_b8);
                  if (pXVar5 != (X509_NAME *)0x0) {
                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {
                      ctx = (X509V3_CTX *)(iVar6 + -1);
                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);
                      X509_NAME_ENTRY_free(pXVar7);
                    }
                    iVar6 = X509_set_subject_name(local_e0,pXVar5);
                    if (iVar6 == 0) {
                      X509_NAME_free(pXVar5);
                      goto LAB_0002e94f;
                    }
                    X509_NAME_free(pXVar5);
                    goto LAB_0002e636;
                  }
                  pAVar25 = (ASN1_INTEGER *)0x0;
                }
                else {
LAB_0002e636:
                  pXVar5 = X509_get_subject_name(local_e0);
                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);
                  row[5] = (OPENSSL_STRING)pAVar25;
                  if (pAVar25 != (ASN1_INTEGER *)0x0) {
                    iVar6 = BN_is_zero(local_a0);
                    if (iVar6 == 0) {
                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);
                    }
                    else {
                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);
                    }
                    pcVar20 = "../apps/ca.c";
                    row[3] = (OPENSSL_STRING)pAVar25;
                    if (pAVar25 == (ASN1_INTEGER *)0x0) {
LAB_0002eab4:
                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);
                      local_e4 = (EVP_PKEY *)0xffffffff;
                      goto LAB_0002e2e5;
                    }
                    if (*row[5] == '\0') {
                      CRYPTO_free(row[5]);
                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);
                      row[5] = (OPENSSL_STRING)pAVar25;
                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;
                    }
                    if (((local_8c->attributes).unique_subject == 0) ||
                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),
                       ppcVar14 == (OPENSSL_STRING *)0x0)) {
                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);
                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {
                        if (ext_copy == 0) {
                          local_e4 = (EVP_PKEY *)&bio_err;
                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,
                                     extraout_ECX);
                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,
                                                nameopt | 0x208);
                        }
                        else {
                          local_e4 = (EVP_PKEY *)&bio_err;
                          iVar6 = 0;
                        }
                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,
                                   iVar6);
                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);
                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);
                        if (batch != 0) {
                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);
                        }
                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);
                        pAVar25 = (ASN1_INTEGER *)0x0;
                        if (verbose == 0) {
                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);
                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);
                          buf[0] = '\0';
                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);
                          if (pcVar15 == (char *)0x0) {
                            pAVar25 = (ASN1_INTEGER *)0x0;
                            BIO_printf(*(BIO **)local_e4,
                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);
                            local_e4 = (EVP_PKEY *)0x0;
                          }
                          else {
                            uVar16 = (byte)buf[0] & 0xffffffdf;
                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;
                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",
                                       uVar16,uVar16);
                            local_e4 = (EVP_PKEY *)0x0;
                          }
                        }
                        else {
LAB_0002ebcc:
                          local_dc = (X509_NAME *)local_e4;
                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);
                          iVar6 = EVP_PKEY_missing_parameters(local_e4);
                          if ((iVar6 != 0) &&
                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {
                            EVP_PKEY_copy_parameters(local_e4,local_9c);
                          }
                          local_d4 = (BIO **)local_dc;
                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,
                                               local_90);
                          local_e4 = (EVP_PKEY *)0xffffffff;
                          if (iVar6 != 0) {
                            uVar36 = 0x742;
                            uVar12 = extraout_EDX_04;
                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);
                            local_e4 = (EVP_PKEY *)
                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);
                            local_dc = *(X509_NAME **)local_e4;
                            row[1] = (OPENSSL_STRING)
                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),
                                                "row expdate");
                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);
                            row[1][*(size_t *)local_e4] = '\0';
                            row[2] = (OPENSSL_STRING)0x0;
                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);
                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)
                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {
                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],
                                         row[4]);
                              local_e4 = (EVP_PKEY *)0xffffffff;
                            }
                            else {
                              local_e4 = (EVP_PKEY *)local_d4;
                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");
                              iVar6 = 0;
                              do {
                                (&pAVar25->length)[iVar6] = (int)row[iVar6];
                                iVar6 = iVar6 + 1;
                              } while (iVar6 != 6);
                              pAVar25[1].data = (uchar *)0x0;
                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);
                              if (iVar6 != 0) {
                                CRYPTO_free((void *)0x0);
                                X509_NAME_free(local_d8);
                                X509_NAME_free(local_b8);
                                *local_b0 = (X509 *)local_e0;
                                local_e4 = (EVP_PKEY *)0x1;
                                goto LAB_0002e343;
                              }
                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);
                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",
                                         *(undefined4 *)(*(int *)local_a4 + 0x10));
                              local_e4 = (EVP_PKEY *)0xffffffff;
                            }
                          }
                        }
                        goto LAB_0002e2e5;
                      }
                      local_e4 = (EVP_PKEY *)&bio_err;
                      pcVar35 = row[3];
                      ppcVar37 = extraout_ECX;
                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",
                                 row[3],extraout_ECX);
                      pcVar20 = "      check the database/serial_file for corruption\n";
                    }
                    else {
                      pcVar20 = "ERROR:There is already a certificate for %s\n";
                      local_e4 = (EVP_PKEY *)&bio_err;
                      pcVar35 = row[5];
                      ppcVar37 = ppcVar14;
                    }
                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);
                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",
                               iVar6,iVar6);
                    cVar2 = **ppcVar14;
                    if (cVar2 == 'E') {
                      pcVar20 = "Expired";
                    }
                    else if (cVar2 == 'R') {
                      pcVar20 = "Revoked";
                    }
                    else if (cVar2 == 'V') {
                      pcVar20 = "Valid";
                    }
                    else {
                      pcVar20 = "\ninvalid type, Data base error\n";
                    }
                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);
                    uVar12 = extraout_EDX_00;
                    if (**ppcVar14 == 'R') {
                      pcVar20 = ppcVar14[1];
                      if (pcVar20 == (char *)0x0) {
                        pcVar20 = "undef";
                      }
                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);
                      uVar12 = extraout_EDX_03;
                    }
                    pcVar20 = ppcVar14[1];
                    if (pcVar20 == (char *)0x0) {
                      pcVar20 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);
                    pcVar20 = ppcVar14[3];
                    if (pcVar20 == (char *)0x0) {
                      pcVar20 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);
                    pcVar20 = ppcVar14[4];
                    if (pcVar20 == (char *)0x0) {
                      pcVar20 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);
                    pcVar20 = ppcVar14[5];
                    if (pcVar20 == (char *)0x0) {
                      pcVar20 = "undef";
                    }
                    pAVar25 = (ASN1_INTEGER *)0x0;
                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);
                    local_e4 = (EVP_PKEY *)0xffffffff;
                    goto LAB_0002e2e5;
                  }
                }
                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);
                local_e4 = (EVP_PKEY *)0xffffffff;
                goto LAB_0002e2e5;
              }
            }
          }
LAB_0002e84a:
          pAVar25 = (ASN1_INTEGER *)0x0;
        }
        local_e4 = (EVP_PKEY *)0xffffffff;
      }
    }
  }
  else {
    pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);
    if (pXVar5 != (X509_NAME *)0x0) {
      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);
      X509_NAME_free(pXVar5);
      goto LAB_0002dcb3;
    }
    ERR_print_errors((BIO *)bio_err);
    local_e0 = (X509 *)0x0;
    local_b8 = (X509_NAME *)0x0;
    local_d8 = (X509_NAME *)0x0;
    local_e4 = (EVP_PKEY *)0xffffffff;
    pAVar25 = (ASN1_INTEGER *)0x0;
  }
LAB_0002e2e5:
  ppcVar27 = row;
  local_dc = (X509_NAME *)pAVar25;
  do {
    ppcVar28 = ppcVar27 + 1;
    CRYPTO_free(*ppcVar27);
    ppcVar27 = ppcVar28;
  } while ((OPENSSL_STRING *)local_3c != ppcVar28);
  CRYPTO_free(local_dc);
  X509_NAME_free(local_d8);
  X509_NAME_free(local_b8);
  X509_free(local_e0);
LAB_0002e343:
  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (int)local_e4;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
joined_r0x0002efd1:
  pbVar24 = pbVar10;
  if (pXVar7 != (X509_NAME_ENTRY *)0x0) {
LAB_0002e1ad:
    pbVar21 = (byte *)0xffffffff;
    iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0);
    pbVar24 = pbVar10;
    if (iVar6 == 0) {
      pcVar20 = "Memory allocation failure\n";
      goto LAB_0002e2b5;
    }
  }
  goto LAB_0002e14e;
  while( true ) {
    iVar6 = iVar6 + -1;
    bVar31 = *pbVar24 < *pbVar10;
    bVar30 = *pbVar24 == *pbVar10;
    pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;
    pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;
    if (!bVar30) break;
code_r0x0002e27e:
    if (iVar6 == 0) break;
  }
  bVar33 = false;
  bVar30 = (!bVar31 && !bVar30) == bVar31;
  if (bVar30) {
LAB_0002e236:
    pbVar21 = *(byte **)(local_d0 + 4);
    pcVar20 = "The %s field needed to be supplied and was missing\n";
  }
  else {
    iVar6 = 6;
    pbVar24 = pbVar21;
    pbVar10 = (byte *)"match";
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar33 = *pbVar24 < *pbVar10;
      bVar30 = *pbVar24 == *pbVar10;
      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;
      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;
    } while (bVar30);
    if ((!bVar33 && !bVar30) == bVar33) {
LAB_0002e2a5:
      pbVar21 = *(byte **)(local_d0 + 4);
      pcVar20 = "The mandatory %s field was missing\n";
    }
    else {
LAB_0002e921:
      pcVar20 = "%s:invalid type in \'policy\' configuration\n";
    }
  }
LAB_0002e2b5:
  BIO_printf((BIO *)bio_err,pcVar20,pbVar21);
  goto LAB_0002e2c6;
}



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

undefined4 __regparm3
FUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,
            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,
            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,
            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,
            undefined4 param_25,X509 *param_26)

{
  uchar uVar1;
  char cVar2;
  BIO *pBVar3;
  CONF *conf;
  X509_NAME *pXVar4;
  int iVar5;
  X509_NAME_ENTRY *pXVar6;
  ASN1_STRING *pAVar7;
  ASN1_OBJECT *o;
  char *pcVar8;
  byte *pbVar10;
  X509 *pXVar11;
  undefined4 uVar12;
  EVP_PKEY *pEVar13;
  OPENSSL_STRING *ppcVar14;
  char *pcVar15;
  ASN1_TIME *a;
  char *pcVar16;
  uint uVar17;
  int iVar18;
  int loc;
  uchar *puVar19;
  X509 *pXVar20;
  OPENSSL_STRING *extraout_ECX;
  undefined4 extraout_EDX;
  undefined4 extraout_EDX_00;
  undefined4 extraout_EDX_01;
  undefined4 extraout_EDX_02;
  byte *pbVar21;
  undefined4 extraout_EDX_03;
  undefined4 extraout_EDX_04;
  uchar *puVar22;
  byte *pbVar23;
  byte *pbVar24;
  X509V3_CTX *ctx;
  ASN1_INTEGER *pAVar25;
  byte *pbVar26;
  int in_GS_OFFSET;
  undefined1 uVar27;
  bool bVar28;
  bool bVar29;
  undefined1 uVar30;
  bool bVar31;
  byte bVar32;
  undefined8 uVar33;
  undefined4 uVar34;
  OPENSSL_STRING *ppcVar35;
  X509 *x;
  undefined1 auStack_ec [8];
  EVP_PKEY *local_e4;
  X509 *local_e0;
  X509_NAME *local_dc;
  X509_NAME *local_d8;
  char *local_d4;
  char *local_d0;
  undefined4 local_cc;
  ASN1_STRING *local_c8;
  ASN1_STRING *local_c4;
  byte *local_c0;
  byte *local_bc;
  X509_NAME *local_b8;
  X509V3_CTX *local_b4;
  undefined4 *local_b0;
  X509 *local_ac;
  char *local_a8;
  int *local_a4;
  BIGNUM *local_a0;
  EVP_PKEY *local_9c;
  int local_98;
  undefined4 local_94;
  undefined4 local_90;
  int *local_8c;
  undefined4 local_88;
  CONF *local_84;
  byte *local_80;
  X509V3_CTX local_70;
  OPENSSL_STRING local_54;
  void *local_50;
  undefined4 local_4c;
  ASN1_INTEGER *local_48;
  char *local_44;
  ASN1_INTEGER *local_40;
  undefined4 local_3c;
  char acStack_23 [3];
  int local_20;
  undefined4 uStack_14;
  char *pcVar9;
  
  bVar32 = 0;
  uStack_14 = 0x2db89;
  local_94 = param_4;
  local_90 = param_5;
  local_88 = param_14;
  local_cc = param_6;
  local_98 = param_15;
  local_8c = param_7;
  local_b4 = param_19;
  local_a4 = param_8;
  local_a8 = param_20;
  local_a0 = param_9;
  local_84 = param_21;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_54 = (char *)0x0;
  local_50 = (void *)0x0;
  local_4c = 0;
  local_48 = (ASN1_INTEGER *)0x0;
  local_44 = (char *)0x0;
  local_40 = (ASN1_INTEGER *)0x0;
  local_ac = param_3;
  local_9c = param_2;
  if (param_10 == 0) {
LAB_0002dcb3:
    if (param_24 != 0) {
      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");
    }
    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);
    local_d8 = (X509_NAME *)&DAT_000c458c;
    local_e4 = (EVP_PKEY *)0x0;
    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {
      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);
      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);
      o = X509_NAME_ENTRY_get_object(pXVar6);
      iVar5 = OBJ_obj2nid(o);
      if (DAT_000c44e8 != 0) {
        iVar18 = pAVar7->type;
        if (iVar18 == 0x1c) {
          ASN1_UNIVERSALSTRING_to_string(pAVar7);
          iVar18 = pAVar7->type;
        }
        if (iVar18 == 0x16) {
          if (iVar5 == 0x30) goto LAB_0002dfb4;
          pAVar7->type = 0x14;
        }
        else {
          if (iVar5 != 0x30) goto LAB_0002dd0e;
          if (iVar18 == 0x13) {
            pAVar7->type = 0x16;
          }
LAB_0002dfb4:
          if (param_13 == 0) goto LAB_0002dd2b;
          if (pAVar7->type != 0x16) goto LAB_0002dfcf;
        }
LAB_0002ddaf:
        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);
        if (iVar5 == 0x14) {
          if (pAVar7->type == 0x14) goto LAB_0002dd1c;
        }
        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {
LAB_0002dd1c:
          if (param_24 != 0) {
            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);
            pcVar15 = (char *)((int)&local_3c + 3);
            pcVar16 = pcVar15;
            if (0 < 0x16 - iVar5) {
              pcVar9 = pcVar15;
              do {
                pcVar8 = pcVar9 + 1;
                *pcVar9 = ' ';
                pcVar9 = pcVar8;
                pcVar16 = pcVar15 + (0x16 - iVar5);
              } while (pcVar15 + (0x16 - iVar5) != pcVar8);
            }
            pcVar16[0] = ':';
            pcVar16[1] = '\0';
            BIO_puts(*(BIO **)local_d8,pcVar15);
            iVar5 = pAVar7->type;
            if (iVar5 == 0x13) {
              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");
            }
            else {
              pBVar3 = *(BIO **)local_d8;
              if (iVar5 == 0x14) {
                BIO_printf(pBVar3,"T61STRING:\'");
              }
              else if (iVar5 == 0x16) {
                BIO_printf(pBVar3,"IA5STRING:\'");
              }
              else if (iVar5 == 0x1c) {
                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");
              }
              else {
                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);
              }
            }
            local_d4 = "^%c";
            puVar22 = pAVar7->data;
            local_d0 = "\\0x%02X";
            puVar19 = puVar22 + pAVar7->length;
            if (0 < pAVar7->length) {
              do {
                while( true ) {
                  uVar1 = *puVar22;
                  local_e0 = (X509 *)(int)(char)uVar1;
                  pBVar3 = *(BIO **)local_d8;
                  if (0x5e < (byte)(uVar1 - 0x20)) break;
                  puVar22 = puVar22 + 1;
                  BIO_printf(pBVar3,"%c",local_e0);
                  if (puVar22 == puVar19) goto LAB_0002df49;
                }
                if ((char)uVar1 < '\0') {
                  BIO_printf(pBVar3,local_d0,local_e0);
                }
                else {
                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));
                }
                puVar22 = puVar22 + 1;
              } while (puVar22 != puVar19);
            }
LAB_0002df49:
            BIO_printf(*(BIO **)local_d8,"\'\n");
          }
          goto LAB_0002dd2b;
        }
        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";
LAB_0002dde4:
        BIO_printf(DAT_000c458c,pcVar15);
        local_b8 = (X509_NAME *)0x0;
        goto LAB_0002de05;
      }
      if ((iVar5 != 0x30) || (param_13 != 0)) {
        iVar18 = pAVar7->type;
        if (iVar5 != 0x30) {
LAB_0002dd0e:
          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;
          goto LAB_0002dd1c;
        }
        if (iVar18 == 0x16) goto LAB_0002ddaf;
LAB_0002dfcf:
        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";
        goto LAB_0002dde4;
      }
LAB_0002dd2b:
      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);
    }
    local_b8 = X509_NAME_new();
    if (local_b8 == (X509_NAME *)0x0) {
      BIO_printf(DAT_000c458c,"Memory allocation failure\n");
LAB_0002de05:
      local_e0 = (X509 *)0x0;
      local_d8 = (X509_NAME *)0x0;
      pAVar25 = (ASN1_INTEGER *)0x0;
      local_e4 = (EVP_PKEY *)0xffffffff;
    }
    else {
      if (param_26 == (X509 *)0x0) {
        pXVar4 = X509_get_subject_name(local_ac);
        local_d8 = X509_NAME_dup(pXVar4);
      }
      else {
        local_d8 = X509_NAME_dup(local_dc);
      }
      if (local_d8 == (X509_NAME *)0x0) {
LAB_0002e2c6:
        local_e0 = (X509 *)0x0;
        pAVar25 = (ASN1_INTEGER *)0x0;
        local_e4 = (EVP_PKEY *)0xffffffff;
      }
      else {
        local_c0 = (byte *)0x7e599;
        local_d4 = (char *)0x0;
        local_c4 = (ASN1_STRING *)0x0;
        local_c8 = (ASN1_STRING *)0x0;
        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {
          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);
          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));
          if (iVar5 == 0) {
            pbVar21 = *(byte **)(local_d0 + 4);
            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";
            goto LAB_0002e2b5;
          }
          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);
          local_bc = (byte *)0x7e5a2;
          pbVar24 = (byte *)0xffffffff;
LAB_0002e14e:
          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ
                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);
          if (-1 < (int)pbVar10) {
            uVar27 = auStack_ec < (undefined1 *)0x8;
            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;
            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);
            iVar5 = 9;
            pbVar21 = *(byte **)(local_d0 + 8);
            pbVar24 = pbVar21;
            pbVar26 = local_c0;
            do {
              if (iVar5 == 0) break;
              iVar5 = iVar5 + -1;
              uVar27 = *pbVar24 < *pbVar26;
              uVar30 = *pbVar24 == *pbVar26;
              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;
            } while ((bool)uVar30);
            bVar28 = false;
            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;
            local_e0 = (X509 *)pXVar6;
            if (bVar31) goto joined_r0x0002efd1;
            iVar5 = 9;
            pbVar24 = pbVar21;
            pbVar26 = local_bc;
            do {
              pbVar23 = pbVar24;
              if (iVar5 == 0) break;
              iVar5 = iVar5 + -1;
              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;
              bVar28 = *pbVar24 < *pbVar26;
              bVar31 = *pbVar24 == *pbVar26;
              pbVar24 = pbVar23;
              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;
            } while (bVar31);
            if ((!bVar28 && !bVar31) == bVar28) {
              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;
              goto LAB_0002e236;
            }
            local_80 = pbVar21;
            iVar5 = strcmp((char *)pbVar21,"match");
            pbVar21 = local_80;
            if (iVar5 == 0) {
              if (local_e0 != (X509 *)0x0) {
                iVar5 = -1;
                local_80 = pbVar10;
                do {
                  pEVar13 = local_e4;
                  iVar18 = iVar5;
                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);
                  if ((loc < 0) && (iVar5 == -1)) {
                    pbVar21 = *(byte **)(local_d0 + 4);
                    pcVar15 = 
                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"
                    ;
                    goto LAB_0002e2b5;
                  }
                  if (loc < 0) {
                    puVar19 = "NULL";
                    if (local_c8 != (ASN1_STRING *)0x0) {
                      puVar19 = local_c8->data;
                    }
                    puVar22 = "NULL";
                    if (local_c4 != (ASN1_STRING *)0x0) {
                      puVar22 = local_c4->data;
                    }
                    BIO_printf(DAT_000c458c,
                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"
                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23
                              );
                    goto LAB_0002e2c6;
                  }
                  pXVar6 = X509_NAME_get_entry(local_d8,loc);
                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);
                  local_c8 = pAVar7;
                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);
                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);
                  iVar5 = loc;
                  pbVar10 = local_80;
                } while (iVar18 != 0);
                goto joined_r0x0002efd1;
              }
              goto LAB_0002e2a5;
            }
            goto LAB_0002e921;
          }
          bVar28 = pbVar24 != (byte *)0xffffffff;
          bVar31 = pbVar24 == (byte *)0xffffffff;
          if (bVar31) {
            iVar5 = 9;
            pbVar21 = *(byte **)(local_d0 + 8);
            pbVar24 = pbVar21;
            pbVar10 = local_c0;
            do {
              if (iVar5 == 0) break;
              iVar5 = iVar5 + -1;
              bVar28 = *pbVar24 < *pbVar10;
              bVar31 = *pbVar24 == *pbVar10;
              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;
            } while (bVar31);
            bVar29 = false;
            bVar28 = (!bVar28 && !bVar31) == bVar28;
            if (!bVar28) {
              iVar5 = 9;
              pbVar24 = pbVar21;
              pbVar10 = (byte *)"supplied";
              goto code_r0x0002e27e;
            }
          }
          local_d4 = local_d4 + 1;
        }
        if (DAT_000c44ec != 0) {
          X509_NAME_free(local_b8);
          local_b8 = X509_NAME_dup(local_dc);
          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;
        }
        if (param_18 != 0) {
          BIO_printf(DAT_000c458c,
                     "Everything appears to be ok, creating and signing the certificate\n");
        }
        pXVar11 = X509_new();
        local_e0 = pXVar11;
        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;
        pAVar25 = X509_get_serialNumber(pXVar11);
        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);
        if (pAVar25 != (ASN1_INTEGER *)0x0) {
          if (param_26 == (X509 *)0x0) {
            pXVar4 = X509_get_subject_name(local_ac);
            iVar5 = X509_set_issuer_name(local_e0,pXVar4);
          }
          else {
            iVar5 = X509_set_issuer_name(pXVar11,local_b8);
          }
          if ((iVar5 != 0) &&
             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),
             iVar5 != 0)) {
            if (local_98 != 0) {
              uVar12 = X509_get0_notAfter(local_e0);
              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);
              param_16 = (X509 *)local_70.flags;
              if (iVar5 == 0) goto LAB_0002e84a;
            }
            x = local_e0;
            iVar5 = X509_set_subject_name(local_e0,local_b8);
            ctx = local_b4;
            if (iVar5 != 0) {
              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);
              iVar5 = X509_set_pubkey(x,pEVar13);
              if (iVar5 != 0) {
                if (local_a8 != (char *)0x0) {
                  if (param_26 == (X509 *)0x0) {
                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,
                                   0);
                  }
                  else {
                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);
                  }
                  conf = local_84;
                  ctx = &local_70;
                  if (DAT_000c44f0 == (CONF *)0x0) {
                    X509V3_set_nconf(ctx,local_84);
                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);
                    if (pXVar20 == (X509 *)0x0) {
                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,
                                 extraout_EDX_04);
                      ERR_print_errors(DAT_000c458c);
                      goto LAB_0002e84a;
                    }
                    pXVar11 = x;
                    if (param_18 != 0) {
                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,
                                 pXVar20);
                      pXVar11 = pXVar20;
                    }
                  }
                  else if (param_18 == 0) {
                    X509V3_set_nconf(ctx,DAT_000c44f0);
                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);
                    if (iVar5 == 0) {
                      local_e4 = (EVP_PKEY *)&DAT_000c458c;
                      iVar5 = 0;
LAB_0002e824:
                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,
                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);
                      ERR_print_errors((BIO *)local_e4->type);
                      goto LAB_0002e84a;
                    }
                  }
                  else {
                    local_e4 = (EVP_PKEY *)&DAT_000c458c;
                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,
                               DAT_000c44f0);
                    X509V3_set_nconf(ctx,DAT_000c44f0);
                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);
                    if (iVar5 == 0) goto LAB_0002e824;
                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",
                               param_26,param_26);
                    pXVar11 = param_26;
                  }
                }
                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);
                if (iVar5 == 0) {
                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");
                  ERR_print_errors(DAT_000c458c);
LAB_0002e94f:
                  pAVar25 = (ASN1_INTEGER *)0x0;
                  local_e4 = (EVP_PKEY *)0xffffffff;
                  goto LAB_0002e2e5;
                }
                iVar5 = X509_get0_extensions(local_e0);
                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&
                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;
                if (param_18 != 0) {
                  BIO_printf(DAT_000c458c,
                             "The subject name appears to be ok, checking data base for clashes\n",
                             param_18,param_18);
                }
                if (param_13 == 0) {
                  ctx = (X509V3_CTX *)0xffffffff;
                  pXVar4 = X509_NAME_dup(local_b8);
                  if (pXVar4 != (X509_NAME *)0x0) {
                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {
                      ctx = (X509V3_CTX *)(iVar5 + -1);
                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);
                      X509_NAME_ENTRY_free(pXVar6);
                    }
                    iVar5 = X509_set_subject_name(local_e0,pXVar4);
                    if (iVar5 == 0) {
                      X509_NAME_free(pXVar4);
                      goto LAB_0002e94f;
                    }
                    X509_NAME_free(pXVar4);
                    goto LAB_0002e636;
                  }
                  pAVar25 = (ASN1_INTEGER *)0x0;
                }
                else {
LAB_0002e636:
                  pXVar4 = X509_get_subject_name(local_e0);
                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);
                  local_40 = pAVar25;
                  if (pAVar25 != (ASN1_INTEGER *)0x0) {
                    iVar5 = BN_is_zero(local_a0);
                    if (iVar5 == 0) {
                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);
                    }
                    else {
                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);
                    }
                    pcVar15 = "../apps/ca.c";
                    local_48 = pAVar25;
                    if (pAVar25 == (ASN1_INTEGER *)0x0) {
LAB_0002eab4:
                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);
                      local_e4 = (EVP_PKEY *)0xffffffff;
                      goto LAB_0002e2e5;
                    }
                    if ((char)local_40->length == '\0') {
                      CRYPTO_free(local_40);
                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)
                      ;
                      local_40 = pAVar25;
                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;
                    }
                    if ((*local_8c == 0) ||
                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),
                       ppcVar14 == (OPENSSL_STRING *)0x0)) {
                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);
                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {
                        if (param_24 == 0) {
                          local_e4 = (EVP_PKEY *)&DAT_000c458c;
                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX
                                    );
                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208
                                               );
                        }
                        else {
                          local_e4 = (EVP_PKEY *)&DAT_000c458c;
                          iVar5 = 0;
                        }
                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,
                                   iVar5);
                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);
                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);
                        if (param_16 != (X509 *)0x0) {
                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);
                        }
                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);
                        pAVar25 = (ASN1_INTEGER *)0x0;
                        if (param_17 == 0) {
                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);
                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);
                          local_3c._3_1_ = 0;
                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,
                                          *(FILE **)PTR_stdin_000bdf94);
                          if (pcVar16 == (char *)0x0) {
                            pAVar25 = (ASN1_INTEGER *)0x0;
                            BIO_printf(*(BIO **)local_e4,
                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);
                            local_e4 = (EVP_PKEY *)0x0;
                          }
                          else {
                            uVar17 = local_3c._3_1_ & 0xffffffdf;
                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;
                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",
                                       uVar17,uVar17);
                            local_e4 = (EVP_PKEY *)0x0;
                          }
                        }
                        else {
LAB_0002ebcc:
                          local_dc = (X509_NAME *)local_e4;
                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);
                          iVar5 = EVP_PKEY_missing_parameters(local_e4);
                          if ((iVar5 != 0) &&
                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {
                            EVP_PKEY_copy_parameters(local_e4,local_9c);
                          }
                          local_d4 = (char *)local_dc;
                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);
                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);
                          local_e4 = (EVP_PKEY *)0xffffffff;
                          if ((int)uVar33 != 0) {
                            uVar34 = 0x742;
                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);
                            local_e4 = (EVP_PKEY *)
                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);
                            local_dc = *(X509_NAME **)local_e4;
                            local_50 = (void *)FUN_00073440((undefined1 *)
                                                            ((int)&((ASN1_INTEGER *)local_dc)->
                                                                   length + 1),"row expdate");
                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);
                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;
                            local_4c = 0;
                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);
                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||
                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {
                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,
                                         local_44);
                              local_e4 = (EVP_PKEY *)0xffffffff;
                            }
                            else {
                              local_e4 = (EVP_PKEY *)local_d4;
                              pAVar25 = (ASN1_INTEGER *)
                                        FUN_00073440(0x1c,"row space",local_44,local_44);
                              iVar5 = 0;
                              do {
                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];
                                iVar5 = iVar5 + 1;
                              } while (iVar5 != 6);
                              pAVar25[1].data = (uchar *)0x0;
                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);
                              if (iVar5 != 0) {
                                CRYPTO_free((void *)0x0);
                                X509_NAME_free(local_d8);
                                X509_NAME_free(local_b8);
                                *local_b0 = local_e0;
                                local_e4 = (EVP_PKEY *)0x1;
                                goto LAB_0002e343;
                              }
                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);
                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",
                                         *(undefined4 *)(*local_a4 + 0x10));
                              local_e4 = (EVP_PKEY *)0xffffffff;
                            }
                          }
                        }
                        goto LAB_0002e2e5;
                      }
                      local_e4 = (EVP_PKEY *)&DAT_000c458c;
                      pAVar25 = local_48;
                      ppcVar35 = extraout_ECX;
                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",
                                 local_48,extraout_ECX);
                      pcVar15 = "      check the database/serial_file for corruption\n";
                    }
                    else {
                      pcVar15 = "ERROR:There is already a certificate for %s\n";
                      local_e4 = (EVP_PKEY *)&DAT_000c458c;
                      pAVar25 = local_40;
                      ppcVar35 = ppcVar14;
                    }
                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);
                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",
                               iVar5,iVar5);
                    cVar2 = **ppcVar14;
                    if (cVar2 == 'E') {
                      pcVar15 = "Expired";
                    }
                    else if (cVar2 == 'R') {
                      pcVar15 = "Revoked";
                    }
                    else if (cVar2 == 'V') {
                      pcVar15 = "Valid";
                    }
                    else {
                      pcVar15 = "\ninvalid type, Data base error\n";
                    }
                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);
                    uVar12 = extraout_EDX_00;
                    if (**ppcVar14 == 'R') {
                      pcVar15 = ppcVar14[1];
                      if (pcVar15 == (char *)0x0) {
                        pcVar15 = "undef";
                      }
                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);
                      uVar12 = extraout_EDX_03;
                    }
                    pcVar15 = ppcVar14[1];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);
                    pcVar15 = ppcVar14[3];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);
                    pcVar15 = ppcVar14[4];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);
                    pcVar15 = ppcVar14[5];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    pAVar25 = (ASN1_INTEGER *)0x0;
                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);
                    local_e4 = (EVP_PKEY *)0xffffffff;
                    goto LAB_0002e2e5;
                  }
                }
                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);
                local_e4 = (EVP_PKEY *)0xffffffff;
                goto LAB_0002e2e5;
              }
            }
          }
LAB_0002e84a:
          pAVar25 = (ASN1_INTEGER *)0x0;
        }
        local_e4 = (EVP_PKEY *)0xffffffff;
      }
    }
  }
  else {
    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);
    if (pXVar4 != (X509_NAME *)0x0) {
      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);
      X509_NAME_free(pXVar4);
      goto LAB_0002dcb3;
    }
    ERR_print_errors(DAT_000c458c);
    local_e0 = (X509 *)0x0;
    local_b8 = (X509_NAME *)0x0;
    local_d8 = (X509_NAME *)0x0;
    local_e4 = (EVP_PKEY *)0xffffffff;
    pAVar25 = (ASN1_INTEGER *)0x0;
  }
LAB_0002e2e5:
  ppcVar14 = &local_54;
  local_dc = (X509_NAME *)pAVar25;
  do {
    ppcVar35 = ppcVar14 + 1;
    CRYPTO_free(*ppcVar14);
    ppcVar14 = ppcVar35;
  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);
  CRYPTO_free(local_dc);
  X509_NAME_free(local_d8);
  X509_NAME_free(local_b8);
  X509_free(local_e0);
LAB_0002e343:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_e4;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0007d010();
joined_r0x0002efd1:
  pbVar24 = pbVar10;
  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {
LAB_0002e1ad:
    pbVar21 = (byte *)0xffffffff;
    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);
    pbVar24 = pbVar10;
    if (iVar5 == 0) {
      pcVar15 = "Memory allocation failure\n";
      goto LAB_0002e2b5;
    }
  }
  goto LAB_0002e14e;
  while( true ) {
    iVar5 = iVar5 + -1;
    bVar29 = *pbVar24 < *pbVar10;
    bVar28 = *pbVar24 == *pbVar10;
    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;
    if (!bVar28) break;
code_r0x0002e27e:
    if (iVar5 == 0) break;
  }
  bVar31 = false;
  bVar28 = (!bVar29 && !bVar28) == bVar29;
  if (bVar28) {
LAB_0002e236:
    pbVar21 = *(byte **)(local_d0 + 4);
    pcVar15 = "The %s field needed to be supplied and was missing\n";
  }
  else {
    iVar5 = 6;
    pbVar24 = pbVar21;
    pbVar10 = (byte *)"match";
    do {
      if (iVar5 == 0) break;
      iVar5 = iVar5 + -1;
      bVar31 = *pbVar24 < *pbVar10;
      bVar28 = *pbVar24 == *pbVar10;
      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;
    } while (bVar28);
    if ((!bVar31 && !bVar28) == bVar31) {
LAB_0002e2a5:
      pbVar21 = *(byte **)(local_d0 + 4);
      pcVar15 = "The mandatory %s field was missing\n";
    }
    else {
LAB_0002e921:
      pcVar15 = "%s:invalid type in \'policy\' configuration\n";
    }
  }
LAB_0002e2b5:
  BIO_printf(DAT_000c458c,pcVar15,pbVar21);
  goto LAB_0002e2c6;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0002c7d0
ADD EBX,0x8eeef
SUB ESP,0xdc
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,dword ptr [ESP + 0xf0]
MOV EDI,dword ptr [ESP + 0x11c]
MOV dword ptr [ESP + 0x40],ECX
MOV dword ptr [ESP + 0x58],EAX
MOV EAX,dword ptr [ESP + 0xf4]
MOV ECX,dword ptr [ESP + 0x118]
MOV dword ptr [ESP + 0x50],EDX
MOV dword ptr [ESP + 0x5c],EAX
MOV EAX,dword ptr [ESP + 0xf8]
MOV dword ptr [ESP + 0x64],ECX
MOV EDX,dword ptr [ESP + 0x134]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0xfc]
MOV dword ptr [ESP + 0x54],EDI
MOV ECX,dword ptr [ESP + 0x12c]
MOV dword ptr [ESP + 0x60],EAX
MOV EAX,dword ptr [ESP + 0x100]
MOV EDI,dword ptr [ESP + 0x130]
MOV dword ptr [ESP + 0x38],ECX
MOV dword ptr [ESP + 0x48],EAX
MOV EAX,dword ptr [ESP + 0x104]
MOV dword ptr [ESP + 0x44],EDI
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [ESP + 0x108]
MOV dword ptr [ESP + 0x68],EDX
MOV EDI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xcc],EDI
XOR EDI,EDI
MOV dword ptr [ESP + 0x98],0x0
MOV dword ptr [ESP + 0x9c],0x0
MOV dword ptr [ESP + 0xa0],0x0
MOV dword ptr [ESP + 0xa4],0x0
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0xac],0x0
TEST EAX,EAX
JZ 0x0002dcb3
SUB ESP,0x4
PUSH dword ptr [ESP + 0x114]
PUSH dword ptr [ESP + 0x114]
PUSH EAX
CALL 0x00074ec0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0002e38f
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [ESP + 0x44]
CALL 0x00029d20
MOV dword ptr [ESP],EDI
CALL 0x0002c298
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x140]
TEST EAX,EAX
JNZ 0x0002e370
SUB ESP,0xc
PUSH dword ptr [ESP + 0x44]
CALL 0x00028fa0
MOV dword ptr [ESP + 0x20],EAX
LEA EAX,[EBX + 0x7b14]
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0x0
MOV dword ptr [ESP + 0x14],EAX
JMP 0x0002dd30
MOV EAX,dword ptr [EDI + 0x4]
CMP EAX,0x1c
JZ 0x0002dfe0
CMP EAX,0x16
JZ 0x0002df90
CMP EBP,0x30
JZ 0x0002dfa8
CMP EAX,0x1e
JZ 0x0002dd1c
CMP EAX,0xc
JNZ 0x0002ddaf
MOV EAX,dword ptr [ESP + 0x140]
TEST EAX,EAX
JNZ 0x0002de30
ADD dword ptr [ESP + 0x8],0x1
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x0002a8b0
ADD ESP,0x10
CMP dword ptr [ESP + 0x8],EAX
JGE 0x0002e070
SUB ESP,0x8
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x1c]
CALL 0x000286e0
MOV ESI,EAX
MOV dword ptr [ESP],EAX
CALL 0x000287e0
MOV dword ptr [ESP],ESI
MOV EDI,EAX
CALL 0x0002a6b0
MOV dword ptr [ESP],EAX
MOV ESI,EAX
CALL 0x00027d10
ADD ESP,0x10
MOV EBP,EAX
MOV EAX,dword ptr [EBX + 0x7a70]
TEST EAX,EAX
JNZ 0x0002dcf0
CMP EBP,0x30
JNZ 0x0002dd9a
MOV EAX,dword ptr [ESP + 0x114]
TEST EAX,EAX
JZ 0x0002dd2b
MOV EAX,dword ptr [EDI + 0x4]
CMP EBP,0x30
JNZ 0x0002dd0e
CMP EAX,0x16
JNZ 0x0002dfcf
SUB ESP,0x8
PUSH dword ptr [EDI]
PUSH dword ptr [EDI + 0x8]
CALL 0x0002af60
ADD ESP,0x10
CMP EAX,0x14
JZ 0x0002dff8
CMP EAX,0x16
JNZ 0x0002dd1c
CMP dword ptr [EDI + 0x4],0x13
JNZ 0x0002dd1c
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc24b4]
PUSH EAX
LEA EAX,[EBX + 0x7b14]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x14],0x0
XOR EDI,EDI
LEA EBP,[EBX + 0xfffc19c2]
LEA ESI,[ESP + 0x98]
MOV dword ptr [ESP + 0x8],0xffffffff
JMP 0x0002e2e5
SUB ESP,0x8
PUSH ESI
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x00028290
MOV EDX,0x16
ADD ESP,0x10
SUB EDX,EAX
LEA ECX,[ESP + 0xb3]
TEST EDX,EDX
JLE 0x0002e1e0
ADD EDX,ECX
MOV EAX,ECX
LEA ESI,[ESI]
ADD EAX,0x1
MOV byte ptr [EAX + -0x1],0x20
CMP EDX,EAX
JNZ 0x0002de60
SUB ESP,0x8
MOV EBP,0x3a
MOV word ptr [EDX],BP
PUSH ECX
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x000283e0
MOV EAX,dword ptr [EDI + 0x4]
ADD ESP,0x10
CMP EAX,0x13
JZ 0x0002e010
MOV ECX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [ECX]
CMP EAX,0x14
JZ 0x0002e050
CMP EAX,0x16
JZ 0x0002e1c8
CMP EAX,0x1c
JZ 0x0002e030
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xfffc1b09]
PUSH EAX
PUSH EDX
CALL 0x00027240
ADD ESP,0x10
LEA ECX,[EBX + 0xfffc1b1d]
MOV ESI,dword ptr [EDI + 0x8]
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x18],ECX
LEA ECX,[EBX + 0xfffc1b15]
LEA EDI,[ESI + EAX*0x1]
MOV dword ptr [ESP + 0x1c],ECX
TEST EAX,EAX
JG 0x0002df13
JMP 0x0002df49
TEST DL,DL
JS 0x0002df70
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x10]
ADD EAX,0x40
PUSH EAX
PUSH dword ptr [ESP + 0x20]
PUSH ECX
CALL 0x00027240
ADD ESP,0x10
ADD ESI,0x1
CMP ESI,EDI
JZ 0x0002df49
MOVSX EAX,byte ptr [ESI]
MOV EDX,EAX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x14]
LEA EBP,[EDX + -0x20]
MOV ECX,dword ptr [EAX]
MOV EAX,EBP
CMP AL,0x5e
JA 0x0002def0
SUB ESP,0x4
LEA EAX,[EBX + 0xfffc4c8a]
ADD ESI,0x1
PUSH dword ptr [ESP + 0x10]
PUSH EAX
PUSH ECX
CALL 0x00027240
ADD ESP,0x10
CMP ESI,EDI
JNZ 0x0002df13
SUB ESP,0x8
LEA EAX,[EBX + 0xfffcc36c]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002dd2b
SUB ESP,0x4
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x24]
PUSH ECX
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002df0c
CMP EBP,0x30
JZ 0x0002dfb4
MOV dword ptr [EDI + 0x4],0x14
JMP 0x0002ddaf
CMP EAX,0x13
JNZ 0x0002dfb4
MOV dword ptr [EDI + 0x4],0x16
MOV ECX,dword ptr [ESP + 0x114]
TEST ECX,ECX
JZ 0x0002dd2b
MOV EAX,dword ptr [EDI + 0x4]
CMP EAX,0x16
JZ 0x0002ddaf
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc2480]
JMP 0x0002dde4
SUB ESP,0xc
PUSH EDI
CALL 0x00028100
MOV EAX,dword ptr [EDI + 0x4]
ADD ESP,0x10
JMP 0x0002dcfc
CMP dword ptr [EDI + 0x4],0x14
JZ 0x0002dd1c
JMP 0x0002dddb
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc1ad3]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002dec6
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc1af7]
PUSH EAX
PUSH EDX
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002dec6
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc1adf]
PUSH EAX
PUSH EDX
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002dec6
CALL 0x000282f0
MOV dword ptr [ESP + 0x34],EAX
TEST EAX,EAX
JZ 0x0002e87b
MOV ESI,dword ptr [ESP + 0x148]
TEST ESI,ESI
JNZ 0x0002e1f0
SUB ESP,0xc
PUSH dword ptr [ESP + 0x4c]
CALL 0x0002b000
MOV dword ptr [ESP],EAX
CALL 0x0002adb0
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x14]
TEST ECX,ECX
JZ 0x0002e2c6
LEA EAX,[EBX + 0xfffc1b21]
MOV dword ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x28],0x0
MOV dword ptr [ESP + 0x24],0x0
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x0002e0ee
CMP ESI,-0x1
JZ 0x0002e250
ADD dword ptr [ESP + 0x18],0x1
SUB ESP,0xc
PUSH dword ptr [ESP + 0x2c]
CALL 0x0002b920
ADD ESP,0x10
CMP dword ptr [ESP + 0x18],EAX
JGE 0x0002e3d4
SUB ESP,0x8
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x2c]
CALL 0x00027140
MOV dword ptr [ESP + 0x2c],EAX
POP EDX
PUSH dword ptr [EAX + 0x4]
CALL 0x00029570
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e866
SUB ESP,0xc
MOV ESI,0xffffffff
PUSH EAX
CALL 0x0002b6f0
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
LEA EAX,[EBX + 0xfffc1b2a]
MOV dword ptr [ESP + 0x30],EAX
SUB ESP,0x4
PUSH ESI
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x1c]
CALL 0x0002a3d0
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JS 0x0002e0e0
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x000286e0
MOV EDI,dword ptr [ESP + 0x2c]
MOV ECX,0x9
MOV dword ptr [ESP + 0x1c],EAX
MOV EDX,dword ptr [EDI + 0x8]
MOV EDI,dword ptr [ESP + 0x3c]
MOV ESI,EDX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
ADD ESP,0x10
TEST AL,AL
JNZ 0x0002e210
MOV EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x0002e1c1
PUSH 0x0
PUSH -0x1
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x40]
CALL 0x0002a6a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e8a2
MOV ESI,EBP
JMP 0x0002e14e
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc1aeb]
PUSH EAX
PUSH EDX
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002dec6
MOV EDX,ECX
JMP 0x0002de6b
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x0002adb0
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
JMP 0x0002e0ab
MOV EDI,dword ptr [ESP + 0x30]
MOV ECX,0x9
MOV ESI,EDX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0002ef12
MOV EDI,dword ptr [ESP + 0xc]
TEST EDI,EDI
JNZ 0x0002e1a5
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfffc2530]
JMP 0x0002e2b5
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [ESP + 0x2c]
MOV ECX,0x9
MOV EDX,dword ptr [EAX + 0x8]
MOV ESI,EDX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0002e0e9
MOV ECX,0x9
LEA EDI,[EBX + 0xfffc1b2a]
MOV ESI,EDX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0002e236
MOV ECX,0x6
LEA EDI,[EBX + 0xfffc1b33]
MOV ESI,EDX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0002e921
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfffc2564]
PUSH EAX
LEA EAX,[EBX + 0x7b14]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0xc],0x0
XOR EDI,EDI
LEA EBP,[EBX + 0xfffc19c2]
LEA ESI,[ESP + 0x98]
MOV dword ptr [ESP + 0x8],0xffffffff
LEA EAX,[ESP + 0xb0]
MOV dword ptr [ESP + 0x10],EDI
MOV EDI,ESI
MOV ESI,EAX
SUB ESP,0x4
ADD EDI,0x4
PUSH 0x75e
PUSH EBP
PUSH dword ptr [EDI + -0x4]
CALL 0x00028c20
ADD ESP,0x10
CMP ESI,EDI
JNZ 0x0002e2f4
MOV EDI,dword ptr [ESP + 0x10]
SUB ESP,0x4
PUSH 0x760
PUSH EBP
PUSH EDI
CALL 0x00028c20
POP ESI
PUSH dword ptr [ESP + 0x20]
CALL 0x0002c298
POP EDI
PUSH dword ptr [ESP + 0x40]
CALL 0x0002c298
POP EBP
PUSH dword ptr [ESP + 0x18]
CALL 0x0002c2c0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xcc]
XOR EDX,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0x8]
JNZ 0x0002f077
ADD ESP,0xdc
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA ECX,[EBX + 0x7b14]
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc2450]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002dcc2
LEA EAX,[EBX + 0x7b14]
SUB ESP,0xc
LEA EBP,[EBX + 0xfffc19c2]
PUSH dword ptr [EAX]
CALL 0x0002c0c0
ADD ESP,0x10
MOV dword ptr [ESP + 0xc],0x0
LEA ESI,[ESP + 0x98]
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x8],0xffffffff
JMP 0x0002e2e5
MOV EBP,dword ptr [EBX + 0x7a74]
TEST EBP,EBP
JNZ 0x0002e8cf
MOV ESI,dword ptr [ESP + 0x128]
TEST ESI,ESI
JNZ 0x0002e8b0
CALL 0x00029b30
MOV ESI,EAX
MOV dword ptr [ESP + 0xc],EAX
TEST EAX,EAX
JZ 0x0002e84a
SUB ESP,0xc
PUSH EAX
CALL 0x00029e80
POP EDX
POP ECX
PUSH EAX
PUSH dword ptr [ESP + 0x58]
CALL 0x00029630
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0002e84c
MOV EAX,dword ptr [ESP + 0x148]
TEST EAX,EAX
JZ 0x0002e8f9
SUB ESP,0x8
PUSH dword ptr [ESP + 0x3c]
PUSH ESI
CALL 0x0002b9b0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e84a
PUSH dword ptr [ESP + 0x120]
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x18]
CALL 0x00077500
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e84a
MOV ESI,dword ptr [ESP + 0x54]
TEST ESI,ESI
JZ 0x0002e4ac
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x0002af10
PUSH EAX
PUSH 0x0
PUSH 0x0
LEA EAX,[ESP + 0x98]
PUSH EAX
CALL 0x0002b4a0
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x7c]
MOV dword ptr [ESP + 0x120],ECX
TEST EAX,EAX
JZ 0x0002e84a
SUB ESP,0x8
PUSH dword ptr [ESP + 0x3c]
MOV EDI,dword ptr [ESP + 0x18]
PUSH EDI
CALL 0x0002ba40
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e84a
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x44]
PUSH ESI
CALL 0x00029b80
POP EDX
POP ECX
PUSH EAX
PUSH EDI
CALL 0x00029b70
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e84a
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JZ 0x0002e560
MOV EBP,dword ptr [ESP + 0x148]
TEST EBP,EBP
JZ 0x0002e96e
SUB ESP,0x8
PUSH 0x0
PUSH 0x0
PUSH ESI
PUSH EDI
PUSH EDI
LEA ESI,[ESP + 0x98]
PUSH ESI
CALL 0x00028c30
ADD ESP,0x20
MOV EAX,dword ptr [EBX + 0x7a78]
TEST EAX,EAX
JZ 0x0002f07c
MOV ECX,dword ptr [ESP + 0x128]
TEST ECX,ECX
JNZ 0x0002f0cf
SUB ESP,0x8
PUSH EAX
PUSH ESI
CALL 0x000275d0
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x58]
PUSH ESI
PUSH dword ptr [EBX + 0x7a78]
CALL 0x00027d80
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0002e81e
SUB ESP,0x4
PUSH dword ptr [ESP + 0x148]
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x18]
CALL 0x00073a40
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e930
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x000294c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002e5a9
SUB ESP,0xc
PUSH EAX
CALL 0x0002b920
ADD ESP,0x10
TEST EAX,EAX
JG 0x0002eef5
MOV EAX,dword ptr [ESP + 0x128]
TEST EAX,EAX
JNZ 0x0002e996
MOV EAX,dword ptr [ESP + 0x114]
TEST EAX,EAX
JNZ 0x0002e636
SUB ESP,0xc
MOV ESI,0xffffffff
PUSH dword ptr [ESP + 0x40]
CALL 0x0002adb0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x0002e600
JMP 0x0002f036
SUB ESP,0x8
LEA ESI,[EAX + -0x1]
PUSH EAX
PUSH EDI
CALL 0x000293d0
MOV dword ptr [ESP],EAX
CALL 0x0002afb0
ADD ESP,0x10
SUB ESP,0x4
PUSH ESI
PUSH 0x30
PUSH EDI
CALL 0x0002a770
ADD ESP,0x10
TEST EAX,EAX
JNS 0x0002e5e8
PUSH EBP
PUSH EBP
PUSH EDI
PUSH dword ptr [ESP + 0x18]
CALL 0x0002ba40
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002f069
SUB ESP,0xc
PUSH EDI
CALL 0x0002c298
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x0002b000
ADD ESP,0xc
PUSH 0x0
PUSH 0x0
PUSH EAX
CALL 0x00029950
MOV dword ptr [ESP + 0xbc],EAX
MOV EDI,EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002f036
SUB ESP,0xc
PUSH dword ptr [ESP + 0x58]
CALL 0x00027920
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002ee92
LEA EAX,[EBX + 0xfffd5011]
LEA EBP,[EBX + 0xfffc19c2]
PUSH ECX
PUSH 0x6c8
PUSH EBP
PUSH EAX
CALL 0x000289e0
MOV dword ptr [ESP + 0xb4],EAX
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0xa4]
TEST EDI,EDI
JZ 0x0002eab4
MOV EAX,dword ptr [ESP + 0xac]
CMP byte ptr [EAX],0x0
JZ 0x0002ea7e
MOV EAX,dword ptr [ESP + 0x60]
LEA ESI,[ESP + 0x98]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0002ea30
PUSH EAX
LEA ESI,[ESP + 0x9c]
PUSH ESI
PUSH 0x5
MOV EAX,dword ptr [ESP + 0x54]
PUSH dword ptr [EAX]
CALL 0x000277c0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0002ea30
PUSH EAX
LEA EAX,[EBX + 0xfffc27a4]
LEA ECX,[EBX + 0x7b14]
PUSH dword ptr [ESP + 0xb0]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc28bc]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
MOVZX EAX,byte ptr [EAX]
CMP AL,0x45
JZ 0x0002ea25
CMP AL,0x52
JZ 0x0002ea1a
CMP AL,0x56
JZ 0x0002ea07
LEA EAX,[EBX + 0xfffc2430]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffc1b39]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
CMP byte ptr [EAX],0x52
JZ 0x0002e9e0
MOV EAX,dword ptr [EDI + 0x4]
TEST EAX,EAX
JZ 0x0002e9d5
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffc1b5f]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
MOV EAX,dword ptr [EDI + 0xc]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0002e9ca
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffc1b72]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
MOV EAX,dword ptr [EDI + 0x10]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0002e9bf
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffc1b85]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
MOV EAX,dword ptr [EDI + 0x14]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0002e9b4
PUSH EDI
XOR EDI,EDI
PUSH EAX
LEA EAX,[EBX + 0xfffc1b98]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0xffffffff
JMP 0x0002e2e5
LEA ECX,[EBX + 0x7b14]
PUSH EAX
LEA EAX,[EBX + 0xfffc26b8]
PUSH dword ptr [ESP + 0x48]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
POP EAX
MOV ECX,dword ptr [ESP + 0x14]
PUSH dword ptr [ECX]
CALL 0x0002c0c0
ADD ESP,0x10
XOR EDI,EDI
MOV dword ptr [ESP + 0x8],0xffffffff
LEA EBP,[EBX + 0xfffc19c2]
LEA ESI,[ESP + 0x98]
JMP 0x0002e2e5
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfffc24fc]
JMP 0x0002e2b5
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc19cf]
PUSH EAX
LEA EAX,[EBX + 0x7b14]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0xc],0x0
JMP 0x0002de05
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc19cf]
JMP 0x0002e2b5
LEA ECX,[EBX + 0x7b14]
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc2654]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002e3f1
SUB ESP,0xc
PUSH dword ptr [ESP + 0x40]
CALL 0x0002c298
POP EDI
PUSH dword ptr [ESP + 0x1c]
CALL 0x0002adb0
MOV dword ptr [ESP + 0x44],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0002e3e2
JMP 0x0002e2c6
SUB ESP,0xc
PUSH dword ptr [ESP + 0x4c]
CALL 0x0002b000
POP EDI
POP EBP
PUSH EAX
PUSH dword ptr [ESP + 0x18]
CALL 0x0002b9b0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0002e44d
JMP 0x0002e84a
SUB ESP,0x4
LEA EAX,[EBX + 0xfffc2628]
PUSH EDX
JMP 0x0002e2b5
LEA ESI,[EBX + 0x7b14]
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc2738]
PUSH EAX
PUSH dword ptr [ESI]
CALL 0x00027240
POP EAX
PUSH dword ptr [ESI]
CALL 0x0002c0c0
ADD ESP,0x10
XOR EDI,EDI
MOV dword ptr [ESP + 0x8],0xffffffff
LEA EBP,[EBX + 0xfffc19c2]
LEA ESI,[ESP + 0x98]
JMP 0x0002e2e5
SUB ESP,0x8
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESP + 0x48]
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x58]
LEA ESI,[ESP + 0x98]
PUSH ESI
CALL 0x00028c30
ADD ESP,0x20
JMP 0x0002e51a
LEA ECX,[EBX + 0x7b14]
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc2760]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002e5b8
LEA EAX,[EBX + 0xfffc1acd]
JMP 0x0002e7fc
LEA EAX,[EBX + 0xfffc1acd]
JMP 0x0002e7d6
LEA EAX,[EBX + 0xfffc1acd]
JMP 0x0002e7b0
LEA EAX,[EBX + 0xfffc1acd]
JMP 0x0002e78a
MOV EAX,dword ptr [EDI + 0x4]
TEST EAX,EAX
JZ 0x0002ea12
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffc1b4c]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
JMP 0x0002e77f
LEA EAX,[EBX + 0xfffc1ab7]
JMP 0x0002e759
LEA EAX,[EBX + 0xfffc1acd]
JMP 0x0002e9e7
LEA EAX,[EBX + 0xfffc1abd]
JMP 0x0002e759
LEA EAX,[EBX + 0xfffc1ac5]
JMP 0x0002e759
PUSH ECX
PUSH ESI
PUSH 0x3
MOV EAX,dword ptr [ESP + 0x54]
PUSH dword ptr [EAX]
CALL 0x000277c0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0002eae1
PUSH ECX
LEA ECX,[EBX + 0x7b14]
LEA EAX,[EBX + 0xfffc27d4]
PUSH dword ptr [ESP + 0xa8]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
POP EAX
LEA EAX,[EBX + 0xfffc2808]
POP EDX
PUSH EAX
MOV ECX,dword ptr [ESP + 0x14]
JMP 0x0002e709
PUSH EDX
PUSH 0x6d6
PUSH EBP
PUSH EAX
CALL 0x00028c20
ADD ESP,0xc
PUSH 0x6d7
PUSH EBP
PUSH dword ptr [ESP + 0xb0]
CALL 0x000289e0
MOV dword ptr [ESP + 0xbc],EAX
MOV EDI,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0002e6bc
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc19cf]
PUSH EAX
LEA EAX,[EBX + 0x7b14]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0xffffffff
LEA ESI,[ESP + 0x98]
JMP 0x0002e2e5
CMP dword ptr [ESP + 0x140],0x0
JZ 0x0002ee45
LEA ECX,[EBX + 0x7b14]
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc2840]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
POP EDX
PUSH dword ptr [ESP + 0x18]
CALL 0x0002af10
POP ECX
POP EDX
PUSH EAX
MOV ECX,dword ptr [ESP + 0x14]
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027b30
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
CMP dword ptr [ESP + 0x120],0x0
JNZ 0x0002ed87
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc8c91]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
CMP dword ptr [ESP + 0x124],0x0
JNZ 0x0002ebcc
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc1bcd]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
PUSH 0x0
PUSH 0x0
PUSH 0xb
MOV ECX,dword ptr [ESP + 0x24]
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x28],ECX
CALL 0x0002b800
MOV EAX,dword ptr [EBX + 0x151c]
MOV byte ptr [ESP + 0xd3],0x0
ADD ESP,0x1c
PUSH dword ptr [EAX]
PUSH 0x19
LEA EAX,[ESP + 0xbf]
PUSH EAX
CALL 0x000281f0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0002eed3
MOVZX EAX,byte ptr [ESP + 0xb3]
AND EAX,0xffffffdf
CMP AL,0x59
JNZ 0x0002eeb3
MOV dword ptr [ESP + 0x10],ECX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x0002a440
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP],EAX
CALL 0x00027e30
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JNZ 0x0002edcd
MOV dword ptr [ESP + 0x18],ECX
PUSH dword ptr [ESP + 0x5c]
PUSH dword ptr [ESP + 0x5c]
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x18]
CALL 0x0004e150
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0xffffffff
TEST EAX,EAX
JZ 0x0002e2e5
LEA EAX,[EBX + 0xfffccbab]
PUSH EDX
PUSH 0x742
PUSH EBP
PUSH EAX
CALL 0x000289e0
MOV dword ptr [ESP + 0xa8],EAX
POP ECX
PUSH dword ptr [ESP + 0x18]
CALL 0x0002af10
MOV ECX,EAX
POP EAX
LEA EAX,[EBX + 0xfffc1bea]
POP EDX
PUSH EAX
MOV EAX,dword ptr [ECX]
MOV dword ptr [ESP + 0x1c],EAX
ADD EAX,0x1
MOV dword ptr [ESP + 0x14],ECX
PUSH EAX
CALL 0x00073440
MOV ECX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0xac],EAX
ADD ESP,0xc
MOV EDX,dword ptr [ECX + 0x8]
MOV dword ptr [ESP + 0xc],ECX
PUSH dword ptr [ECX]
PUSH EDX
PUSH EAX
CALL 0x000295d0
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0xac]
MOV EAX,dword ptr [ECX]
MOV byte ptr [EDX + EAX*0x1],0x0
LEA EAX,[EBX + 0xfffd70b8]
MOV dword ptr [ESP + 0xb0],0x0
ADD ESP,0xc
PUSH 0x748
PUSH EBP
PUSH EAX
CALL 0x000289e0
MOV dword ptr [ESP + 0xb8],EAX
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x18]
CMP dword ptr [ESP + 0x98],0x0
JZ 0x0002edad
CMP dword ptr [ESP + 0x9c],0x0
JZ 0x0002edad
TEST EAX,EAX
JZ 0x0002edad
CMP dword ptr [ESP + 0xac],0x0
JZ 0x0002edad
MOV dword ptr [ESP + 0x8],ECX
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc1bf6]
PUSH EAX
PUSH 0x1c
CALL 0x00073440
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
MOV EDI,EAX
XOR EAX,EAX
MOV EDX,dword ptr [ESI + EAX*0x4]
MOV dword ptr [EDI + EAX*0x4],EDX
ADD EAX,0x1
CMP EAX,0x6
JNZ 0x0002ed13
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [EDI + 0x18],0x0
PUSH EAX
PUSH EAX
PUSH EDI
MOV EAX,dword ptr [ESP + 0x54]
PUSH dword ptr [EAX]
CALL 0x00028b60
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0002ee03
SUB ESP,0x4
PUSH 0x760
PUSH EBP
PUSH 0x0
CALL 0x00028c20
POP EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x0002c298
POP EAX
PUSH dword ptr [ESP + 0x40]
CALL 0x0002c298
MOV EAX,dword ptr [ESP + 0x4c]
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EAX],ECX
MOV dword ptr [ESP + 0x8],0x1
JMP 0x0002e343
PUSH EAX
LEA EAX,[EBX + 0xfffc1bc1]
PUSH dword ptr [ESP + 0x124]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
JMP 0x0002eb3a
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc19cf]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0xffffffff
JMP 0x0002e2e5
SUB ESP,0xc
PUSH dword ptr [ESP + 0x5c]
CALL 0x00027e30
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JNZ 0x0002ebf7
PUSH ECX
PUSH ECX
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x14]
CALL 0x0002bf00
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x10]
JMP 0x0002ebf7
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc19ff]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
ADD ESP,0xc
MOV EAX,dword ptr [ESP + 0x4c]
MOV EAX,dword ptr [EAX]
PUSH dword ptr [EAX + 0x10]
LEA EAX,[EBX + 0xfffc1a1a]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x14]
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0xffffffff
JMP 0x0002e2e5
PUSH ECX
LEA EAX,[EBX + 0xfffc1bab]
PUSH ECX
LEA ECX,[EBX + 0x7b14]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
MOV EAX,dword ptr [ESP + 0x148]
OR EAX,0x208
PUSH EAX
PUSH dword ptr [ESP + 0x150]
PUSH dword ptr [ESP + 0x24]
MOV ECX,dword ptr [ESP + 0x24]
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x28],ECX
CALL 0x0002ab60
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x8]
JMP 0x0002eaf5
SUB ESP,0xc
LEA EBP,[EBX + 0xfffc19c2]
PUSH dword ptr [ESP + 0x58]
CALL 0x0002a390
MOV dword ptr [ESP + 0xb4],EAX
ADD ESP,0x10
JMP 0x0002e69d
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc2898]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0x0
JMP 0x0002e2e5
PUSH EAX
XOR EDI,EDI
PUSH EAX
LEA EAX,[EBX + 0xfffc2868]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0x0
JMP 0x0002e2e5
PUSH EAX
PUSH EAX
PUSH 0x2
PUSH dword ptr [ESP + 0x18]
CALL 0x0002a4f0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0002e5a9
JMP 0x0002e84a
LEA EAX,[EBX + 0xfffc1b33]
PUSH ESI
PUSH ESI
PUSH EAX
PUSH EDX
MOV dword ptr [ESP + 0x7c],EDX
CALL 0x0002bce0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x6c]
TEST EAX,EAX
JNZ 0x0002e921
CMP dword ptr [ESP + 0xc],0x0
JZ 0x0002e2a5
OR EDI,0xffffffff
MOV dword ptr [ESP + 0x6c],EBP
MOV EBP,EDI
JMP 0x0002ef95
TEST ESI,ESI
JS 0x0002efe8
SUB ESP,0x8
PUSH ESI
PUSH dword ptr [ESP + 0x20]
CALL 0x000286e0
MOV EDI,EAX
POP EAX
PUSH dword ptr [ESP + 0x18]
CALL 0x000287e0
MOV dword ptr [ESP],EDI
MOV dword ptr [ESP + 0x34],EAX
MOV EBP,EAX
CALL 0x000287e0
MOV dword ptr [ESP + 0x38],EAX
POP EDX
POP ECX
PUSH EAX
PUSH EBP
MOV EBP,ESI
CALL 0x00028ec0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002efc9
SUB ESP,0x4
PUSH EBP
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x20]
CALL 0x0002a3d0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JNS 0x0002ef50
CMP EBP,-0x1
JNZ 0x0002ef50
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfffc2588]
JMP 0x0002e2b5
MOV EBP,dword ptr [ESP + 0x6c]
MOV EAX,EDI
TEST EDI,EDI
JZ 0x0002e1c1
PUSH 0x0
PUSH -0x1
PUSH EAX
JMP 0x0002e1ad
MOV EDX,dword ptr [ESP + 0x24]
LEA EAX,[EBX + 0xfffc1ab2]
TEST EDX,EDX
JZ 0x0002effd
MOV EAX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX + 0x8]
MOV EDI,dword ptr [ESP + 0x28]
LEA EDX,[EBX + 0xfffc1ab2]
TEST EDI,EDI
JZ 0x0002f00e
MOV EDX,dword ptr [EDI + 0x8]
SUB ESP,0xc
PUSH EAX
PUSH EDX
MOV EAX,dword ptr [ESP + 0x30]
PUSH dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfffc25dc]
PUSH EAX
LEA EAX,[EBX + 0x7b14]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x20
JMP 0x0002e2c6
LEA EAX,[EBX + 0xfffc19cf]
PUSH ESI
LEA EBP,[EBX + 0xfffc19c2]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0x7b14]
PUSH dword ptr [EAX]
CALL 0x00027240
ADD ESP,0x10
MOV dword ptr [ESP + 0x8],0xffffffff
LEA ESI,[ESP + 0x98]
JMP 0x0002e2e5
SUB ESP,0xc
PUSH EDI
CALL 0x0002c298
JMP 0x0002e94f
CALL 0x0007d010
PUSH EDI
PUSH EDI
MOV EDI,dword ptr [ESP + 0x70]
PUSH EDI
PUSH ESI
CALL 0x000275d0
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x58]
PUSH ESI
PUSH EDI
CALL 0x00027d80
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0002f132
CMP dword ptr [ESP + 0x128],0x0
JZ 0x0002e560
LEA ECX,[EBX + 0x7b14]
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc270c]
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002e560
LEA ECX,[EBX + 0x7b14]
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc2698]
PUSH EAX
PUSH dword ptr [ECX]
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00027240
POP EAX
POP EDX
PUSH dword ptr [EBX + 0x7a78]
PUSH ESI
CALL 0x000275d0
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x58]
PUSH ESI
PUSH dword ptr [EBX + 0x7a78]
CALL 0x00027d80
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0002e824
LEA EAX,[EBX + 0xfffc26e0]
PUSH EBP
PUSH EBP
PUSH EAX
PUSH dword ptr [ECX]
CALL 0x00027240
ADD ESP,0x10
JMP 0x0002e560
LEA ESI,[EBX + 0x7b14]
LEA EAX,[EBX + 0xfffc26b8]
PUSH EDX
PUSH dword ptr [ESP + 0x48]
PUSH EAX
PUSH dword ptr [ESI]
CALL 0x00027240
POP ECX
PUSH dword ptr [ESI]
CALL 0x0002c0c0
ADD ESP,0x10
JMP 0x0002e84a
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3\nFUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)\n\n{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}\n\n" comment (function_definition "undefined4 __regparm3\nFUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)\n\n{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)" identifier (parameter_list "(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "EVP_PKEY *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "X509 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int *param_7" primitive_type (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int *param_8" primitive_type (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "BIGNUM *param_9" type_identifier (pointer_declarator "*param_9" * identifier)) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "undefined4 param_11" type_identifier identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "int param_13" primitive_type identifier) , (parameter_declaration "undefined4 param_14" type_identifier identifier) , (parameter_declaration "int param_15" primitive_type identifier) , (parameter_declaration "X509 *param_16" type_identifier (pointer_declarator "*param_16" * identifier)) , (parameter_declaration "int param_17" primitive_type identifier) , (parameter_declaration "int param_18" primitive_type identifier) , (parameter_declaration "X509V3_CTX *param_19" type_identifier (pointer_declarator "*param_19" * identifier)) , (parameter_declaration "char *param_20" primitive_type (pointer_declarator "*param_20" * identifier)) , (parameter_declaration "CONF *param_21" type_identifier (pointer_declarator "*param_21" * identifier)) , (parameter_declaration "uint param_22" type_identifier identifier) , (parameter_declaration "ulong param_23" type_identifier identifier) , (parameter_declaration "int param_24" primitive_type identifier) , (parameter_declaration "undefined4 param_25" type_identifier identifier) , (parameter_declaration "X509 *param_26" type_identifier (pointer_declarator "*param_26" * identifier)) ))) (compound_statement "{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "BIO *pBVar3;" type_identifier (pointer_declarator "*pBVar3" * identifier) ;) (declaration "CONF *conf;" type_identifier (pointer_declarator "*conf" * identifier) ;) (declaration "X509_NAME *pXVar4;" type_identifier (pointer_declarator "*pXVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "X509_NAME_ENTRY *pXVar6;" type_identifier (pointer_declarator "*pXVar6" * identifier) ;) (declaration "ASN1_STRING *pAVar7;" type_identifier (pointer_declarator "*pAVar7" * identifier) ;) (declaration "ASN1_OBJECT *o;" type_identifier (pointer_declarator "*o" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "X509 *pXVar11;" type_identifier (pointer_declarator "*pXVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "EVP_PKEY *pEVar13;" type_identifier (pointer_declarator "*pEVar13" * identifier) ;) (declaration "OPENSSL_STRING *ppcVar14;" type_identifier (pointer_declarator "*ppcVar14" * identifier) ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "ASN1_TIME *a;" type_identifier (pointer_declarator "*a" * identifier) ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int loc;" primitive_type identifier ;) (declaration "uchar *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "X509 *pXVar20;" type_identifier (pointer_declarator "*pXVar20" * identifier) ;) (declaration "OPENSSL_STRING *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_00;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_01;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_02;" type_identifier identifier ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "undefined4 extraout_EDX_03;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_04;" type_identifier identifier ;) (declaration "uchar *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "X509V3_CTX *ctx;" type_identifier (pointer_declarator "*ctx" * identifier) ;) (declaration "ASN1_INTEGER *pAVar25;" type_identifier (pointer_declarator "*pAVar25" * identifier) ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 uVar27;" type_identifier identifier ;) (declaration "bool bVar28;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "undefined1 uVar30;" type_identifier identifier ;) (declaration "bool bVar31;" primitive_type identifier ;) (declaration "byte bVar32;" type_identifier identifier ;) (declaration "undefined8 uVar33;" type_identifier identifier ;) (declaration "undefined4 uVar34;" type_identifier identifier ;) (declaration "OPENSSL_STRING *ppcVar35;" type_identifier (pointer_declarator "*ppcVar35" * identifier) ;) (declaration "X509 *x;" type_identifier (pointer_declarator "*x" * identifier) ;) (declaration "undefined1 auStack_ec [8];" type_identifier (array_declarator "auStack_ec [8]" identifier [ number_literal ]) ;) (declaration "EVP_PKEY *local_e4;" type_identifier (pointer_declarator "*local_e4" * identifier) ;) (declaration "X509 *local_e0;" type_identifier (pointer_declarator "*local_e0" * identifier) ;) (declaration "X509_NAME *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "X509_NAME *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "char *local_d4;" primitive_type (pointer_declarator "*local_d4" * identifier) ;) (declaration "char *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "undefined4 local_cc;" type_identifier identifier ;) (declaration "ASN1_STRING *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "ASN1_STRING *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "byte *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "byte *local_bc;" type_identifier (pointer_declarator "*local_bc" * identifier) ;) (declaration "X509_NAME *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "X509V3_CTX *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "undefined4 *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "X509 *local_ac;" type_identifier (pointer_declarator "*local_ac" * identifier) ;) (declaration "char *local_a8;" primitive_type (pointer_declarator "*local_a8" * identifier) ;) (declaration "int *local_a4;" primitive_type (pointer_declarator "*local_a4" * identifier) ;) (declaration "BIGNUM *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "EVP_PKEY *local_9c;" type_identifier (pointer_declarator "*local_9c" * identifier) ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "int *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "CONF *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "X509V3_CTX local_70;" type_identifier identifier ;) (declaration "OPENSSL_STRING local_54;" type_identifier identifier ;) (declaration "void *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "ASN1_INTEGER *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "char *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "ASN1_INTEGER *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "char acStack_23 [3];" primitive_type (array_declarator "acStack_23 [3]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (expression_statement "bVar32 = 0;" (assignment_expression "bVar32 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x2db89;" (assignment_expression "uStack_14 = 0x2db89" identifier = number_literal) ;) (expression_statement "local_94 = param_4;" (assignment_expression "local_94 = param_4" identifier = identifier) ;) (expression_statement "local_90 = param_5;" (assignment_expression "local_90 = param_5" identifier = identifier) ;) (expression_statement "local_88 = param_14;" (assignment_expression "local_88 = param_14" identifier = identifier) ;) (expression_statement "local_cc = param_6;" (assignment_expression "local_cc = param_6" identifier = identifier) ;) (expression_statement "local_98 = param_15;" (assignment_expression "local_98 = param_15" identifier = identifier) ;) (expression_statement "local_8c = param_7;" (assignment_expression "local_8c = param_7" identifier = identifier) ;) (expression_statement "local_b4 = param_19;" (assignment_expression "local_b4 = param_19" identifier = identifier) ;) (expression_statement "local_a4 = param_8;" (assignment_expression "local_a4 = param_8" identifier = identifier) ;) (expression_statement "local_a8 = param_20;" (assignment_expression "local_a8 = param_20" identifier = identifier) ;) (expression_statement "local_a0 = param_9;" (assignment_expression "local_a0 = param_9" identifier = identifier) ;) (expression_statement "local_84 = param_21;" (assignment_expression "local_84 = param_21" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_54 = (char *)0x0;" (assignment_expression "local_54 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = (void *)0x0;" (assignment_expression "local_50 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_48 = (ASN1_INTEGER *)0x0;" (assignment_expression "local_48 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_44 = (char *)0x0;" (assignment_expression "local_44 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_40 = (ASN1_INTEGER *)0x0;" (assignment_expression "local_40 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_ac = param_3;" (assignment_expression "local_ac = param_3" identifier = identifier) ;) (expression_statement "local_9c = param_2;" (assignment_expression "local_9c = param_2" identifier = identifier) ;) (if_statement "if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" if (parenthesized_expression "(param_10 == 0)" ( (binary_expression "param_10 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }" { (labeled_statement "LAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" statement_identifier : (if_statement "if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" if (parenthesized_expression "(param_24 != 0)" ( (binary_expression "param_24 != 0" identifier != number_literal) )) (compound_statement "{\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" { (expression_statement "BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");" (call_expression "BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n")" identifier (argument_list "(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n")" ( identifier , (string_literal ""The Subject\'s Distinguished Name is as follows\n"" " string_content escape_sequence string_content escape_sequence ") ))) ;) }))) (expression_statement "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);" (assignment_expression "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4)" identifier = (cast_expression "(X509_NAME *)X509_REQ_get_subject_name(local_b4)" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_REQ_get_subject_name(local_b4)" identifier (argument_list "(local_b4)" ( identifier ))))) ;) (expression_statement "local_d8 = (X509_NAME *)&DAT_000c458c;" (assignment_expression "local_d8 = (X509_NAME *)&DAT_000c458c" identifier = (cast_expression "(X509_NAME *)&DAT_000c458c" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" while (parenthesized_expression "(iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5)" ( (comma_expression "iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5" (assignment_expression "iVar5 = X509_NAME_entry_count(local_dc)" identifier = (call_expression "X509_NAME_entry_count(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) , (binary_expression "(int)local_e4 < iVar5" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) )) (compound_statement "{\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" { (expression_statement "pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4)" identifier = (call_expression "X509_NAME_get_entry(local_dc,(int)local_e4)" identifier (argument_list "(local_dc,(int)local_e4)" ( identifier , (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);" (assignment_expression "pAVar7 = X509_NAME_ENTRY_get_data(pXVar6)" identifier = (call_expression "X509_NAME_ENTRY_get_data(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier )))) ;) (expression_statement "o = X509_NAME_ENTRY_get_object(pXVar6);" (assignment_expression "o = X509_NAME_ENTRY_get_object(pXVar6)" identifier = (call_expression "X509_NAME_ENTRY_get_object(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier )))) ;) (expression_statement "iVar5 = OBJ_obj2nid(o);" (assignment_expression "iVar5 = OBJ_obj2nid(o)" identifier = (call_expression "OBJ_obj2nid(o)" identifier (argument_list "(o)" ( identifier )))) ;) (if_statement "if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" if (parenthesized_expression "(DAT_000c44e8 != 0)" ( (binary_expression "DAT_000c44e8 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" { (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) (if_statement "if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }" if (parenthesized_expression "(iVar18 == 0x1c)" ( (binary_expression "iVar18 == 0x1c" identifier == number_literal) )) (compound_statement "{\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }" { (expression_statement "ASN1_UNIVERSALSTRING_to_string(pAVar7);" (call_expression "ASN1_UNIVERSALSTRING_to_string(pAVar7)" identifier (argument_list "(pAVar7)" ( identifier ))) ;) (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) })) (if_statement "if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" if (parenthesized_expression "(iVar18 == 0x16)" ( (binary_expression "iVar18 == 0x16" identifier == number_literal) )) (compound_statement "{\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }" { (if_statement "if (iVar5 == 0x30) goto LAB_0002dfb4;" if (parenthesized_expression "(iVar5 == 0x30)" ( (binary_expression "iVar5 == 0x30" identifier == number_literal) )) (goto_statement "goto LAB_0002dfb4;" goto statement_identifier ;)) (expression_statement "pAVar7->type = 0x14;" (assignment_expression "pAVar7->type = 0x14" (field_expression "pAVar7->type" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" else (compound_statement "{\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" { (if_statement "if (iVar5 != 0x30) goto LAB_0002dd0e;" if (parenthesized_expression "(iVar5 != 0x30)" ( (binary_expression "iVar5 != 0x30" identifier != number_literal) )) (goto_statement "goto LAB_0002dd0e;" goto statement_identifier ;)) (if_statement "if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }" if (parenthesized_expression "(iVar18 == 0x13)" ( (binary_expression "iVar18 == 0x13" identifier == number_literal) )) (compound_statement "{\n            pAVar7->type = 0x16;\n          }" { (expression_statement "pAVar7->type = 0x16;" (assignment_expression "pAVar7->type = 0x16" (field_expression "pAVar7->type" identifier -> field_identifier) = number_literal) ;) })) (labeled_statement "LAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;" statement_identifier : (if_statement "if (param_13 == 0) goto LAB_0002dd2b;" if (parenthesized_expression "(param_13 == 0)" ( (binary_expression "param_13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002dd2b;" goto statement_identifier ;))) (if_statement "if (pAVar7->type != 0x16) goto LAB_0002dfcf;" if (parenthesized_expression "(pAVar7->type != 0x16)" ( (binary_expression "pAVar7->type != 0x16" (field_expression "pAVar7->type" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_0002dfcf;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);" statement_identifier : (expression_statement "iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);" (assignment_expression "iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length)" identifier = (call_expression "ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length)" identifier (argument_list "(pAVar7->data,pAVar7->length)" ( (field_expression "pAVar7->data" identifier -> field_identifier) , (field_expression "pAVar7->length" identifier -> field_identifier) )))) ;)) (if_statement "if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" if (parenthesized_expression "(iVar5 == 0x14)" ( (binary_expression "iVar5 == 0x14" identifier == number_literal) )) (compound_statement "{\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }" { (if_statement "if (pAVar7->type == 0x14) goto LAB_0002dd1c;" if (parenthesized_expression "(pAVar7->type == 0x14)" ( (binary_expression "pAVar7->type == 0x14" (field_expression "pAVar7->type" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_0002dd1c;" goto statement_identifier ;)) }) (else_clause "else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" else (if_statement "if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" if (parenthesized_expression "((iVar5 != 0x16) || (pAVar7->type != 0x13))" ( (binary_expression "(iVar5 != 0x16) || (pAVar7->type != 0x13)" (parenthesized_expression "(iVar5 != 0x16)" ( (binary_expression "iVar5 != 0x16" identifier != number_literal) )) || (parenthesized_expression "(pAVar7->type != 0x13)" ( (binary_expression "pAVar7->type != 0x13" (field_expression "pAVar7->type" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" { (labeled_statement "LAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" statement_identifier : (if_statement "if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" if (parenthesized_expression "(param_24 != 0)" ( (binary_expression "param_24 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" { (expression_statement "iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);" (assignment_expression "iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" identifier = (call_expression "i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" identifier (argument_list "(*(BIO **)local_d8,o)" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier )))) ;) (expression_statement "pcVar15 = (char *)((int)&local_3c + 3);" (assignment_expression "pcVar15 = (char *)((int)&local_3c + 3)" identifier = (cast_expression "(char *)((int)&local_3c + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_3c + 3)" ( (binary_expression "(int)&local_3c + 3" (cast_expression "(int)&local_3c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_3c" & identifier)) + number_literal) )))) ;) (expression_statement "pcVar16 = pcVar15;" (assignment_expression "pcVar16 = pcVar15" identifier = identifier) ;) (if_statement "if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }" if (parenthesized_expression "(0 < 0x16 - iVar5)" ( (binary_expression "0 < 0x16 - iVar5" number_literal < (binary_expression "0x16 - iVar5" number_literal - identifier)) )) (compound_statement "{\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }" { (expression_statement "pcVar9 = pcVar15;" (assignment_expression "pcVar9 = pcVar15" identifier = identifier) ;) (do_statement "do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);" do (compound_statement "{\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              }" { (expression_statement "pcVar8 = pcVar9 + 1;" (assignment_expression "pcVar8 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar9 = ' ';" (assignment_expression "*pcVar9 = ' '" (pointer_expression "*pcVar9" * identifier) = (char_literal "' '" ' character ')) ;) (expression_statement "pcVar9 = pcVar8;" (assignment_expression "pcVar9 = pcVar8" identifier = identifier) ;) (expression_statement "pcVar16 = pcVar15 + (0x16 - iVar5);" (assignment_expression "pcVar16 = pcVar15 + (0x16 - iVar5)" identifier = (binary_expression "pcVar15 + (0x16 - iVar5)" identifier + (parenthesized_expression "(0x16 - iVar5)" ( (binary_expression "0x16 - iVar5" number_literal - identifier) )))) ;) }) while (parenthesized_expression "(pcVar15 + (0x16 - iVar5) != pcVar8)" ( (binary_expression "pcVar15 + (0x16 - iVar5) != pcVar8" (binary_expression "pcVar15 + (0x16 - iVar5)" identifier + (parenthesized_expression "(0x16 - iVar5)" ( (binary_expression "0x16 - iVar5" number_literal - identifier) ))) != identifier) )) ;) })) (expression_statement "pcVar16[0] = ':';" (assignment_expression "pcVar16[0] = ':'" (subscript_expression "pcVar16[0]" identifier [ number_literal ]) = (char_literal "':'" ' character ')) ;) (expression_statement "pcVar16[1] = '\0';" (assignment_expression "pcVar16[1] = '\0'" (subscript_expression "pcVar16[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "BIO_puts(*(BIO **)local_d8,pcVar15);" (call_expression "BIO_puts(*(BIO **)local_d8,pcVar15)" identifier (argument_list "(*(BIO **)local_d8,pcVar15)" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier ))) ;) (expression_statement "iVar5 = pAVar7->type;" (assignment_expression "iVar5 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) (if_statement "if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" if (parenthesized_expression "(iVar5 == 0x13)" ( (binary_expression "iVar5 == 0x13" identifier == number_literal) )) (compound_statement "{\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }" { (expression_statement "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");" (call_expression "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'")" identifier (argument_list "(*(BIO **)local_d8,"PRINTABLE:\'")" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""PRINTABLE:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" else (compound_statement "{\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" { (expression_statement "pBVar3 = *(BIO **)local_d8;" (assignment_expression "pBVar3 = *(BIO **)local_d8" identifier = (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" if (parenthesized_expression "(iVar5 == 0x14)" ( (binary_expression "iVar5 == 0x14" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar3,"T61STRING:\'");" (call_expression "BIO_printf(pBVar3,"T61STRING:\'")" identifier (argument_list "(pBVar3,"T61STRING:\'")" ( identifier , (string_literal ""T61STRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" else (if_statement "if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" if (parenthesized_expression "(iVar5 == 0x16)" ( (binary_expression "iVar5 == 0x16" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar3,"IA5STRING:\'");" (call_expression "BIO_printf(pBVar3,"IA5STRING:\'")" identifier (argument_list "(pBVar3,"IA5STRING:\'")" ( identifier , (string_literal ""IA5STRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" else (if_statement "if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" if (parenthesized_expression "(iVar5 == 0x1c)" ( (binary_expression "iVar5 == 0x1c" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar3,"UNIVERSALSTRING:\'");" (call_expression "BIO_printf(pBVar3,"UNIVERSALSTRING:\'")" identifier (argument_list "(pBVar3,"UNIVERSALSTRING:\'")" ( identifier , (string_literal ""UNIVERSALSTRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" else (compound_statement "{\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" { (expression_statement "BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);" (call_expression "BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5)" identifier (argument_list "(pBVar3,"ASN.1 %2d:\'",iVar5)" ( identifier , (string_literal ""ASN.1 %2d:\'"" " string_content escape_sequence ") , identifier ))) ;) }))))))) }))) (expression_statement "local_d4 = "^%c";" (assignment_expression "local_d4 = "^%c"" identifier = (string_literal ""^%c"" " string_content ")) ;) (expression_statement "puVar22 = pAVar7->data;" (assignment_expression "puVar22 = pAVar7->data" identifier = (field_expression "pAVar7->data" identifier -> field_identifier)) ;) (expression_statement "local_d0 = "\\0x%02X";" (assignment_expression "local_d0 = "\\0x%02X"" identifier = (string_literal ""\\0x%02X"" " escape_sequence string_content ")) ;) (expression_statement "puVar19 = puVar22 + pAVar7->length;" (assignment_expression "puVar19 = puVar22 + pAVar7->length" identifier = (binary_expression "puVar22 + pAVar7->length" identifier + (field_expression "pAVar7->length" identifier -> field_identifier))) ;) (if_statement "if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }" if (parenthesized_expression "(0 < pAVar7->length)" ( (binary_expression "0 < pAVar7->length" number_literal < (field_expression "pAVar7->length" identifier -> field_identifier)) )) (compound_statement "{\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }" { (do_statement "do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);" do (compound_statement "{\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              }" { (while_statement "while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }" { (expression_statement "uVar1 = *puVar22;" (assignment_expression "uVar1 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "local_e0 = (X509 *)(int)(char)uVar1;" (assignment_expression "local_e0 = (X509 *)(int)(char)uVar1" identifier = (cast_expression "(X509 *)(int)(char)uVar1" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)uVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (expression_statement "pBVar3 = *(BIO **)local_d8;" (assignment_expression "pBVar3 = *(BIO **)local_d8" identifier = (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (0x5e < (byte)(uVar1 - 0x20)) break;" if (parenthesized_expression "(0x5e < (byte)(uVar1 - 0x20))" ( (binary_expression "0x5e < (byte)(uVar1 - 0x20)" number_literal < (call_expression "(byte)(uVar1 - 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar1 - 0x20)" ( (binary_expression "uVar1 - 0x20" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "BIO_printf(pBVar3,"%c",local_e0);" (call_expression "BIO_printf(pBVar3,"%c",local_e0)" identifier (argument_list "(pBVar3,"%c",local_e0)" ( identifier , (string_literal ""%c"" " string_content ") , identifier ))) ;) (if_statement "if (puVar22 == puVar19) goto LAB_0002df49;" if (parenthesized_expression "(puVar22 == puVar19)" ( (binary_expression "puVar22 == puVar19" identifier == identifier) )) (goto_statement "goto LAB_0002df49;" goto statement_identifier ;)) })) (if_statement "if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" if (parenthesized_expression "((char)uVar1 < '\0')" ( (binary_expression "(char)uVar1 < '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }" { (expression_statement "BIO_printf(pBVar3,local_d0,local_e0);" (call_expression "BIO_printf(pBVar3,local_d0,local_e0)" identifier (argument_list "(pBVar3,local_d0,local_e0)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" else (compound_statement "{\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" { (expression_statement "BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));" (call_expression "BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" identifier (argument_list "(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" ( identifier , identifier , (cast_expression "(X509_NAME_ENTRY *)((int)local_e0 + 0x40)" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e0 + 0x40)" ( (binary_expression "(int)local_e0 + 0x40" (cast_expression "(int)local_e0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))) ;) }))) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar22 != puVar19)" ( (binary_expression "puVar22 != puVar19" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");" statement_identifier : (expression_statement "BIO_printf(*(BIO **)local_d8,"\'\n");" (call_expression "BIO_printf(*(BIO **)local_d8,"\'\n")" identifier (argument_list "(*(BIO **)local_d8,"\'\n")" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""\'\n"" " escape_sequence escape_sequence ") ))) ;)) }))) (goto_statement "goto LAB_0002dd2b;" goto statement_identifier ;) })))) (expression_statement "pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";" (assignment_expression "pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n"" identifier = (string_literal ""\nThe string contains characters that are illegal for the ASN.1 type\n"" " escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);" statement_identifier : (expression_statement "BIO_printf(DAT_000c458c,pcVar15);" (call_expression "BIO_printf(DAT_000c458c,pcVar15)" identifier (argument_list "(DAT_000c458c,pcVar15)" ( identifier , identifier ))) ;)) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002de05;" goto statement_identifier ;) })) (if_statement "if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" if (parenthesized_expression "((iVar5 != 0x30) || (param_13 != 0))" ( (binary_expression "(iVar5 != 0x30) || (param_13 != 0)" (parenthesized_expression "(iVar5 != 0x30)" ( (binary_expression "iVar5 != 0x30" identifier != number_literal) )) || (parenthesized_expression "(param_13 != 0)" ( (binary_expression "param_13 != 0" identifier != number_literal) ))) )) (compound_statement "{\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" { (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) (if_statement "if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" if (parenthesized_expression "(iVar5 != 0x30)" ( (binary_expression "iVar5 != 0x30" identifier != number_literal) )) (compound_statement "{\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" { (labeled_statement "LAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;" statement_identifier : (if_statement "if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;" if (parenthesized_expression "((iVar18 != 0x1e) && (iVar18 != 0xc))" ( (binary_expression "(iVar18 != 0x1e) && (iVar18 != 0xc)" (parenthesized_expression "(iVar18 != 0x1e)" ( (binary_expression "iVar18 != 0x1e" identifier != number_literal) )) && (parenthesized_expression "(iVar18 != 0xc)" ( (binary_expression "iVar18 != 0xc" identifier != number_literal) ))) )) (goto_statement "goto LAB_0002ddaf;" goto statement_identifier ;))) (goto_statement "goto LAB_0002dd1c;" goto statement_identifier ;) })) (if_statement "if (iVar18 == 0x16) goto LAB_0002ddaf;" if (parenthesized_expression "(iVar18 == 0x16)" ( (binary_expression "iVar18 == 0x16" identifier == number_literal) )) (goto_statement "goto LAB_0002ddaf;" goto statement_identifier ;)) (labeled_statement "LAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";" statement_identifier : (expression_statement "pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";" (assignment_expression "pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n"" identifier = (string_literal ""\nemailAddress type needs to be of type IA5STRING\n"" " escape_sequence string_content escape_sequence ")) ;)) (goto_statement "goto LAB_0002dde4;" goto statement_identifier ;) })) (labeled_statement "LAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" statement_identifier : (expression_statement "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" (assignment_expression "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1)" identifier = (cast_expression "(EVP_PKEY *)((int)&local_e4->type + 1)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_e4->type + 1)" ( (binary_expression "(int)&local_e4->type + 1" (cast_expression "(int)&local_e4->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_e4->type" & (field_expression "local_e4->type" identifier -> field_identifier))) + number_literal) )))) ;)) })) (expression_statement "local_b8 = X509_NAME_new();" (assignment_expression "local_b8 = X509_NAME_new()" identifier = (call_expression "X509_NAME_new()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" if (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" ( (binary_expression "local_b8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }" { (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n");" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n")" identifier (argument_list "(DAT_000c458c,"Memory allocation failure\n")" ( identifier , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") ))) ;) (labeled_statement "LAB_0002de05:\n      local_e0 = (X509 *)0x0;" statement_identifier : (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" else (compound_statement "{\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" { (if_statement "if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" if (parenthesized_expression "(param_26 == (X509 *)0x0)" ( (binary_expression "param_26 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }" { (expression_statement "pXVar4 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar4 = X509_get_subject_name(local_ac)" identifier = (call_expression "X509_get_subject_name(local_ac)" identifier (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "local_d8 = X509_NAME_dup(pXVar4);" (assignment_expression "local_d8 = X509_NAME_dup(pXVar4)" identifier = (call_expression "X509_NAME_dup(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier )))) ;) }) (else_clause "else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" else (compound_statement "{\n        local_d8 = X509_NAME_dup(local_dc);\n      }" { (expression_statement "local_d8 = X509_NAME_dup(local_dc);" (assignment_expression "local_d8 = X509_NAME_dup(local_dc)" identifier = (call_expression "X509_NAME_dup(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) ;) }))) (if_statement "if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" if (parenthesized_expression "(local_d8 == (X509_NAME *)0x0)" ( (binary_expression "local_d8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" { (labeled_statement "LAB_0002e2c6:\n        local_e0 = (X509 *)0x0;" statement_identifier : (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" else (compound_statement "{\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" { (expression_statement "local_c0 = (byte *)0x7e599;" (assignment_expression "local_c0 = (byte *)0x7e599" identifier = (cast_expression "(byte *)0x7e599" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d4 = (char *)0x0;" (assignment_expression "local_d4 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c4 = (ASN1_STRING *)0x0;" (assignment_expression "local_c4 = (ASN1_STRING *)0x0" identifier = (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c8 = (ASN1_STRING *)0x0;" (assignment_expression "local_c8 = (ASN1_STRING *)0x0" identifier = (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }" while (parenthesized_expression "(iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5)" ( (comma_expression "iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5" (assignment_expression "iVar5 = OPENSSL_sk_num(local_cc)" identifier = (call_expression "OPENSSL_sk_num(local_cc)" identifier (argument_list "(local_cc)" ( identifier )))) , (binary_expression "(int)local_d4 < iVar5" (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) )) (compound_statement "{\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }" { (expression_statement "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);" (assignment_expression "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4)" identifier = (cast_expression "(char *)OPENSSL_sk_value(local_cc,local_d4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "OPENSSL_sk_value(local_cc,local_d4)" identifier (argument_list "(local_cc,local_d4)" ( identifier , identifier ))))) ;) (expression_statement "iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));" (assignment_expression "iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4))" identifier = (call_expression "OBJ_txt2nid(*(char **)(local_d0 + 4))" identifier (argument_list "(*(char **)(local_d0 + 4))" ( (pointer_expression "*(char **)(local_d0 + 4)" * (cast_expression "(char **)(local_d0 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" { (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = "%s:unknown object type in \'policy\' configuration\n";" (assignment_expression "pcVar15 = "%s:unknown object type in \'policy\' configuration\n"" identifier = (string_literal ""%s:unknown object type in \'policy\' configuration\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) (expression_statement "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);" (assignment_expression "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5)" identifier = (cast_expression "(EVP_PKEY *)OBJ_nid2obj(iVar5)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "OBJ_nid2obj(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))))) ;) (expression_statement "local_bc = (byte *)0x7e5a2;" (assignment_expression "local_bc = (byte *)0x7e5a2" identifier = (cast_expression "(byte *)0x7e5a2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar24 = (byte *)0xffffffff;" (assignment_expression "pbVar24 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" statement_identifier : (expression_statement "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" (assignment_expression "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" identifier = (cast_expression "(byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" identifier (argument_list "(local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" ( identifier , (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)pbVar24" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;)) (if_statement "if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" if (parenthesized_expression "(-1 < (int)pbVar10)" ( (binary_expression "-1 < (int)pbVar10" number_literal < (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" { (expression_statement "uVar27 = auStack_ec < (undefined1 *)0x8;" (assignment_expression "uVar27 = auStack_ec < (undefined1 *)0x8" identifier = (binary_expression "auStack_ec < (undefined1 *)0x8" identifier < (cast_expression "(undefined1 *)0x8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar30 = &stack0x00000000 == (undefined1 *)0xf4;" (assignment_expression "uVar30 = &stack0x00000000 == (undefined1 *)0xf4" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0xf4" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0xf4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10)" identifier = (call_expression "X509_NAME_get_entry(local_dc,(int)pbVar10)" identifier (argument_list "(local_dc,(int)pbVar10)" ( identifier , (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" identifier = (pointer_expression "*(byte **)(local_d0 + 8)" * (cast_expression "(byte **)(local_d0 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 8)" ( (binary_expression "local_d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar26 = local_c0;" (assignment_expression "pbVar26 = local_c0" identifier = identifier) ;) (do_statement "do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);" do (compound_statement "{\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar27 = *pbVar24 < *pbVar26;" (assignment_expression "uVar27 = *pbVar24 < *pbVar26" identifier = (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "uVar30 = *pbVar24 == *pbVar26;" (assignment_expression "uVar30 = *pbVar24 == *pbVar26" identifier = (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar26 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar30)" ( (cast_expression "(bool)uVar30" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (expression_statement "bVar28 = false;" (assignment_expression "bVar28 = false" identifier = false) ;) (expression_statement "bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;" (assignment_expression "bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27" identifier = (binary_expression "(!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27" (parenthesized_expression "(!(bool)uVar27 && !(bool)uVar30)" ( (binary_expression "!(bool)uVar27 && !(bool)uVar30" (unary_expression "!(bool)uVar27" ! (cast_expression "(bool)uVar27" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar30" ! (cast_expression "(bool)uVar30" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar27" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "local_e0 = (X509 *)pXVar6;" (assignment_expression "local_e0 = (X509 *)pXVar6" identifier = (cast_expression "(X509 *)pXVar6" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar31) goto joined_r0x0002efd1;" if (parenthesized_expression "(bVar31)" ( identifier )) (goto_statement "goto joined_r0x0002efd1;" goto statement_identifier ;)) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar26 = local_bc;" (assignment_expression "pbVar26 = local_bc" identifier = identifier) ;) (do_statement "do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);" do (compound_statement "{\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            }" { (expression_statement "pbVar23 = pbVar24;" (assignment_expression "pbVar23 = pbVar24" identifier = identifier) ;) (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "bVar28 = *pbVar24 < *pbVar26;" (assignment_expression "bVar28 = *pbVar24 < *pbVar26" identifier = (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "bVar31 = *pbVar24 == *pbVar26;" (assignment_expression "bVar31 = *pbVar24 == *pbVar26" identifier = (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "pbVar24 = pbVar23;" (assignment_expression "pbVar24 = pbVar23" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar26 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar31)" ( identifier )) ;) (if_statement "if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" if (parenthesized_expression "((!bVar28 && !bVar31) == bVar28)" ( (binary_expression "(!bVar28 && !bVar31) == bVar28" (parenthesized_expression "(!bVar28 && !bVar31)" ( (binary_expression "!bVar28 && !bVar31" (unary_expression "!bVar28" ! identifier) && (unary_expression "!bVar31" ! identifier)) )) == identifier) )) (compound_statement "{\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" { (if_statement "if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;" if (parenthesized_expression "(pXVar6 != (X509_NAME_ENTRY *)0x0)" ( (binary_expression "pXVar6 != (X509_NAME_ENTRY *)0x0" identifier != (cast_expression "(X509_NAME_ENTRY *)0x0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e1ad;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e236;" goto statement_identifier ;) })) (expression_statement "local_80 = pbVar21;" (assignment_expression "local_80 = pbVar21" identifier = identifier) ;) (expression_statement "iVar5 = strcmp((char *)pbVar21,"match");" (assignment_expression "iVar5 = strcmp((char *)pbVar21,"match")" identifier = (call_expression "strcmp((char *)pbVar21,"match")" identifier (argument_list "((char *)pbVar21,"match")" ( (cast_expression "(char *)pbVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""match"" " string_content ") )))) ;) (expression_statement "pbVar21 = local_80;" (assignment_expression "pbVar21 = local_80" identifier = identifier) ;) (if_statement "if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" { (if_statement "if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }" if (parenthesized_expression "(local_e0 != (X509 *)0x0)" ( (binary_expression "local_e0 != (X509 *)0x0" identifier != (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }" { (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) (expression_statement "local_80 = pbVar10;" (assignment_expression "local_80 = pbVar10" identifier = identifier) ;) (do_statement "do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);" do (compound_statement "{\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                }" { (expression_statement "pEVar13 = local_e4;" (assignment_expression "pEVar13 = local_e4" identifier = identifier) ;) (expression_statement "iVar18 = iVar5;" (assignment_expression "iVar18 = iVar5" identifier = identifier) ;) (expression_statement "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);" (assignment_expression "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" identifier = (call_expression "X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" identifier (argument_list "(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" ( identifier , (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" if (parenthesized_expression "((loc < 0) && (iVar5 == -1))" ( (binary_expression "(loc < 0) && (iVar5 == -1)" (parenthesized_expression "(loc < 0)" ( (binary_expression "loc < 0" identifier < number_literal) )) && (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) ))) )) (compound_statement "{\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" { (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;" (assignment_expression "pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" identifier = (string_literal ""The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) (if_statement "if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" if (parenthesized_expression "(loc < 0)" ( (binary_expression "loc < 0" identifier < number_literal) )) (compound_statement "{\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" { (expression_statement "puVar19 = "NULL";" (assignment_expression "puVar19 = "NULL"" identifier = (string_literal ""NULL"" " string_content ")) ;) (if_statement "if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }" if (parenthesized_expression "(local_c8 != (ASN1_STRING *)0x0)" ( (binary_expression "local_c8 != (ASN1_STRING *)0x0" identifier != (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      puVar19 = local_c8->data;\n                    }" { (expression_statement "puVar19 = local_c8->data;" (assignment_expression "puVar19 = local_c8->data" identifier = (field_expression "local_c8->data" identifier -> field_identifier)) ;) })) (expression_statement "puVar22 = "NULL";" (assignment_expression "puVar22 = "NULL"" identifier = (string_literal ""NULL"" " string_content ")) ;) (if_statement "if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }" if (parenthesized_expression "(local_c4 != (ASN1_STRING *)0x0)" ( (binary_expression "local_c4 != (ASN1_STRING *)0x0" identifier != (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      puVar22 = local_c4->data;\n                    }" { (expression_statement "puVar22 = local_c4->data;" (assignment_expression "puVar22 = local_c4->data" identifier = (field_expression "local_c4->data" identifier -> field_identifier)) ;) })) (expression_statement "BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );" (call_expression "BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              )" identifier (argument_list "(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              )" ( identifier , (string_literal ""The %s field is different between\nCA certificate (%s) and the request (%s)\n"" " string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(local_d0 + 4)" * (cast_expression "(undefined4 *)(local_d0 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;) })) (expression_statement "pXVar6 = X509_NAME_get_entry(local_d8,loc);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_d8,loc)" identifier = (call_expression "X509_NAME_get_entry(local_d8,loc)" identifier (argument_list "(local_d8,loc)" ( identifier , identifier )))) ;) (expression_statement "pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);" (assignment_expression "pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" identifier = (call_expression "X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" identifier (argument_list "((X509_NAME_ENTRY *)local_e0)" ( (cast_expression "(X509_NAME_ENTRY *)local_e0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "local_c8 = pAVar7;" (assignment_expression "local_c8 = pAVar7" identifier = identifier) ;) (expression_statement "local_c4 = X509_NAME_ENTRY_get_data(pXVar6);" (assignment_expression "local_c4 = X509_NAME_ENTRY_get_data(pXVar6)" identifier = (call_expression "X509_NAME_ENTRY_get_data(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier )))) ;) (expression_statement "iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);" (assignment_expression "iVar18 = ASN1_STRING_cmp(pAVar7,local_c4)" identifier = (call_expression "ASN1_STRING_cmp(pAVar7,local_c4)" identifier (argument_list "(pAVar7,local_c4)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = loc;" (assignment_expression "iVar5 = loc" identifier = identifier) ;) (expression_statement "pbVar10 = local_80;" (assignment_expression "pbVar10 = local_80" identifier = identifier) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (goto_statement "goto joined_r0x0002efd1;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e2a5;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e921;" goto statement_identifier ;) })) (expression_statement "bVar28 = pbVar24 != (byte *)0xffffffff;" (assignment_expression "bVar28 = pbVar24 != (byte *)0xffffffff" identifier = (binary_expression "pbVar24 != (byte *)0xffffffff" identifier != (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar31 = pbVar24 == (byte *)0xffffffff;" (assignment_expression "bVar31 = pbVar24 == (byte *)0xffffffff" identifier = (binary_expression "pbVar24 == (byte *)0xffffffff" identifier == (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" if (parenthesized_expression "(bVar31)" ( identifier )) (compound_statement "{\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" { (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" identifier = (pointer_expression "*(byte **)(local_d0 + 8)" * (cast_expression "(byte **)(local_d0 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 8)" ( (binary_expression "local_d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = local_c0;" (assignment_expression "pbVar10 = local_c0" identifier = identifier) ;) (do_statement "do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);" do (compound_statement "{\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar28 = *pbVar24 < *pbVar10;" (assignment_expression "bVar28 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar31 = *pbVar24 == *pbVar10;" (assignment_expression "bVar31 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar31)" ( identifier )) ;) (expression_statement "bVar29 = false;" (assignment_expression "bVar29 = false" identifier = false) ;) (expression_statement "bVar28 = (!bVar28 && !bVar31) == bVar28;" (assignment_expression "bVar28 = (!bVar28 && !bVar31) == bVar28" identifier = (binary_expression "(!bVar28 && !bVar31) == bVar28" (parenthesized_expression "(!bVar28 && !bVar31)" ( (binary_expression "!bVar28 && !bVar31" (unary_expression "!bVar28" ! identifier) && (unary_expression "!bVar31" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" if (parenthesized_expression "(!bVar28)" ( (unary_expression "!bVar28" ! identifier) )) (compound_statement "{\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" { (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"supplied";" (assignment_expression "pbVar10 = (byte *)"supplied"" identifier = (cast_expression "(byte *)"supplied"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""supplied"" " string_content "))) ;) (goto_statement "goto code_r0x0002e27e;" goto statement_identifier ;) })) })) (expression_statement "local_d4 = local_d4 + 1;" (assignment_expression "local_d4 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) })) (if_statement "if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" if (parenthesized_expression "(DAT_000c44ec != 0)" ( (binary_expression "DAT_000c44ec != 0" identifier != number_literal) )) (compound_statement "{\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" { (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = X509_NAME_dup(local_dc);" (assignment_expression "local_b8 = X509_NAME_dup(local_dc)" identifier = (call_expression "X509_NAME_dup(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) ;) (if_statement "if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;" if (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" ( (binary_expression "local_b8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;)) })) (if_statement "if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" if (parenthesized_expression "(param_18 != 0)" ( (binary_expression "param_18 != 0" identifier != number_literal) )) (compound_statement "{\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" { (expression_statement "BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");" (call_expression "BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n")" identifier (argument_list "(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n")" ( identifier , (string_literal ""Everything appears to be ok, creating and signing the certificate\n"" " string_content escape_sequence ") ))) ;) })) (expression_statement "pXVar11 = X509_new();" (assignment_expression "pXVar11 = X509_new()" identifier = (call_expression "X509_new()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_e0 = pXVar11;" (assignment_expression "local_e0 = pXVar11" identifier = identifier) ;) (if_statement "if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;" if (parenthesized_expression "(pXVar11 == (X509 *)0x0)" ( (binary_expression "pXVar11 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) (expression_statement "pAVar25 = X509_get_serialNumber(pXVar11);" (assignment_expression "pAVar25 = X509_get_serialNumber(pXVar11)" identifier = (call_expression "X509_get_serialNumber(pXVar11)" identifier (argument_list "(pXVar11)" ( identifier )))) ;) (expression_statement "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);" (assignment_expression "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25)" identifier = (call_expression "BN_to_ASN1_INTEGER(local_a0,pAVar25)" identifier (argument_list "(local_a0,pAVar25)" ( identifier , identifier )))) ;) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" if (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" identifier != (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" { (if_statement "if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" if (parenthesized_expression "(param_26 == (X509 *)0x0)" ( (binary_expression "param_26 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }" { (expression_statement "pXVar4 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar4 = X509_get_subject_name(local_ac)" identifier = (call_expression "X509_get_subject_name(local_ac)" identifier (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "iVar5 = X509_set_issuer_name(local_e0,pXVar4);" (assignment_expression "iVar5 = X509_set_issuer_name(local_e0,pXVar4)" identifier = (call_expression "X509_set_issuer_name(local_e0,pXVar4)" identifier (argument_list "(local_e0,pXVar4)" ( identifier , identifier )))) ;) }) (else_clause "else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" else (compound_statement "{\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" { (expression_statement "iVar5 = X509_set_issuer_name(pXVar11,local_b8);" (assignment_expression "iVar5 = X509_set_issuer_name(pXVar11,local_b8)" identifier = (call_expression "X509_set_issuer_name(pXVar11,local_b8)" identifier (argument_list "(pXVar11,local_b8)" ( identifier , identifier )))) ;) }))) (if_statement "if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" if (parenthesized_expression "((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0))" ( (binary_expression "(iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)" ( (comma_expression "pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0" (assignment_expression "pXVar11 = param_16" identifier = identifier) , (comma_expression "iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0" (assignment_expression "iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16)" identifier = (call_expression "FUN_00077500(local_e0,local_88,local_98,param_16)" identifier (argument_list "(local_e0,local_88,local_98,param_16)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" { (if_statement "if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }" if (parenthesized_expression "(local_98 != 0)" ( (binary_expression "local_98 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }" { (expression_statement "uVar12 = X509_get0_notAfter(local_e0);" (assignment_expression "uVar12 = X509_get0_notAfter(local_e0)" identifier = (call_expression "X509_get0_notAfter(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;) (expression_statement "iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);" (assignment_expression "iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12)" identifier = (call_expression "ASN1_TIME_diff(&local_70,0,0,uVar12)" identifier (argument_list "(&local_70,0,0,uVar12)" ( (pointer_expression "&local_70" & identifier) , number_literal , number_literal , identifier )))) ;) (expression_statement "param_16 = (X509 *)local_70.flags;" (assignment_expression "param_16 = (X509 *)local_70.flags" identifier = (cast_expression "(X509 *)local_70.flags" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_70.flags" identifier . field_identifier))) ;) (if_statement "if (iVar5 == 0) goto LAB_0002e84a;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) })) (expression_statement "x = local_e0;" (assignment_expression "x = local_e0" identifier = identifier) ;) (expression_statement "iVar5 = X509_set_subject_name(local_e0,local_b8);" (assignment_expression "iVar5 = X509_set_subject_name(local_e0,local_b8)" identifier = (call_expression "X509_set_subject_name(local_e0,local_b8)" identifier (argument_list "(local_e0,local_b8)" ( identifier , identifier )))) ;) (expression_statement "ctx = local_b4;" (assignment_expression "ctx = local_b4" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" { (expression_statement "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);" (assignment_expression "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" identifier = (cast_expression "(EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_REQ_get0_pubkey(local_b4)" identifier (argument_list "(local_b4)" ( identifier ))))) ;) (expression_statement "iVar5 = X509_set_pubkey(x,pEVar13);" (assignment_expression "iVar5 = X509_set_pubkey(x,pEVar13)" identifier = (call_expression "X509_set_pubkey(x,pEVar13)" identifier (argument_list "(x,pEVar13)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" { (if_statement "if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }" if (parenthesized_expression "(local_a8 != (char *)0x0)" ( (binary_expression "local_a8 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }" { (if_statement "if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" if (parenthesized_expression "(param_26 == (X509 *)0x0)" ( (binary_expression "param_26 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }" { (expression_statement "X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);" (call_expression "X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0)" identifier (argument_list "(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0)" ( (pointer_expression "&local_70" & identifier) , identifier , identifier , (cast_expression "(X509_REQ *)local_b4" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_CRL *)0x0" ( (type_descriptor "X509_CRL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) }) (else_clause "else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" else (compound_statement "{\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" { (expression_statement "X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);" (call_expression "X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" identifier (argument_list "(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" ( (pointer_expression "&local_70" & identifier) , identifier , identifier , (cast_expression "(X509_REQ *)ctx" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_CRL *)0x0" ( (type_descriptor "X509_CRL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) }))) (expression_statement "conf = local_84;" (assignment_expression "conf = local_84" identifier = identifier) ;) (expression_statement "ctx = &local_70;" (assignment_expression "ctx = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (if_statement "if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" if (parenthesized_expression "(DAT_000c44f0 == (CONF *)0x0)" ( (binary_expression "DAT_000c44f0 == (CONF *)0x0" identifier == (cast_expression "(CONF *)0x0" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }" { (expression_statement "X509V3_set_nconf(ctx,local_84);" (call_expression "X509V3_set_nconf(ctx,local_84)" identifier (argument_list "(ctx,local_84)" ( identifier , identifier ))) ;) (expression_statement "pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);" (assignment_expression "pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" identifier = (cast_expression "(X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" identifier (argument_list "(conf,ctx,local_a8,local_e0)" ( identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }" if (parenthesized_expression "(pXVar20 == (X509 *)0x0)" ( (binary_expression "pXVar20 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }" { (expression_statement "BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);" (call_expression "BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04)" identifier (argument_list "(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04)" ( identifier , (string_literal ""ERROR: adding extensions in section %s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" identifier (argument_list "(DAT_000c458c)" ( identifier ))) ;) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;) })) (expression_statement "pXVar11 = x;" (assignment_expression "pXVar11 = x" identifier = identifier) ;) (if_statement "if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }" if (parenthesized_expression "(param_18 != 0)" ( (binary_expression "param_18 != 0" identifier != number_literal) )) (compound_statement "{\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }" { (expression_statement "BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);" (call_expression "BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20)" identifier (argument_list "(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20)" ( identifier , (string_literal ""Successfully added extensions from config\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pXVar11 = pXVar20;" (assignment_expression "pXVar11 = pXVar20" identifier = identifier) ;) })) }) (else_clause "else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" else (if_statement "if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" if (parenthesized_expression "(param_18 == 0)" ( (binary_expression "param_18 == 0" identifier == number_literal) )) (compound_statement "{\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }" { (expression_statement "X509V3_set_nconf(ctx,DAT_000c44f0);" (call_expression "X509V3_set_nconf(ctx,DAT_000c44f0)" identifier (argument_list "(ctx,DAT_000c44f0)" ( identifier , identifier ))) ;) (expression_statement "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);" (assignment_expression "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier = (call_expression "X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier (argument_list "(DAT_000c44f0,ctx,local_a8,local_e0)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);" statement_identifier : (expression_statement "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);" (call_expression "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5)" identifier (argument_list "((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5)" ( (cast_expression "(BIO *)((ASN1_OBJECT *)local_e4)->sn" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((ASN1_OBJECT *)local_e4)->sn" (parenthesized_expression "((ASN1_OBJECT *)local_e4)" ( (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) , (string_literal ""ERROR: adding extensions in section %s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;)) (expression_statement "ERR_print_errors((BIO *)local_e4->type);" (call_expression "ERR_print_errors((BIO *)local_e4->type)" identifier (argument_list "((BIO *)local_e4->type)" ( (cast_expression "(BIO *)local_e4->type" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e4->type" identifier -> field_identifier)) ))) ;) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;) })) }) (else_clause "else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" else (compound_statement "{\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);" (call_expression "BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0)" identifier (argument_list "(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0)" ( identifier , (string_literal ""Extra configuration file found\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "X509V3_set_nconf(ctx,DAT_000c44f0);" (call_expression "X509V3_set_nconf(ctx,DAT_000c44f0)" identifier (argument_list "(ctx,DAT_000c44f0)" ( identifier , identifier ))) ;) (expression_statement "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);" (assignment_expression "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier = (call_expression "X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier (argument_list "(DAT_000c44f0,ctx,local_a8,local_e0)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0002e824;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e824;" goto statement_identifier ;)) (expression_statement "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);" (call_expression "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26)" identifier (argument_list "((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26)" ( (cast_expression "(BIO *)local_e4->type" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e4->type" identifier -> field_identifier)) , (string_literal ""Successfully added extensions from file.\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pXVar11 = param_26;" (assignment_expression "pXVar11 = param_26" identifier = identifier) ;) }))))) })) (expression_statement "iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);" (assignment_expression "iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11)" identifier = (call_expression "FUN_00073a40(local_e0,local_b4,param_25,pXVar11)" identifier (argument_list "(local_e0,local_b4,param_25,pXVar11)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" { (expression_statement "BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");" (call_expression "BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n")" identifier (argument_list "(DAT_000c458c,"ERROR: adding extensions from request\n")" ( identifier , (string_literal ""ERROR: adding extensions from request\n"" " string_content escape_sequence ") ))) ;) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" identifier (argument_list "(DAT_000c458c)" ( identifier ))) ;) (labeled_statement "LAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;" statement_identifier : (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (expression_statement "iVar5 = X509_get0_extensions(local_e0);" (assignment_expression "iVar5 = X509_get0_extensions(local_e0)" identifier = (call_expression "X509_get0_extensions(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;) (if_statement "if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;" if (parenthesized_expression "(((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0))" ( (binary_expression "((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)" (parenthesized_expression "((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5))" ( (binary_expression "(iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)" ( (comma_expression "iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5" (assignment_expression "iVar5 = OPENSSL_sk_num(iVar5)" identifier = (call_expression "OPENSSL_sk_num(iVar5)" identifier (argument_list "(iVar5)" ( identifier )))) , (binary_expression "0 < iVar5" number_literal < identifier)) ))) )) && (parenthesized_expression "(iVar5 = X509_set_version(local_e0,2), iVar5 == 0)" ( (comma_expression "iVar5 = X509_set_version(local_e0,2), iVar5 == 0" (assignment_expression "iVar5 = X509_set_version(local_e0,2)" identifier = (call_expression "X509_set_version(local_e0,2)" identifier (argument_list "(local_e0,2)" ( identifier , number_literal )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) (if_statement "if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }" if (parenthesized_expression "(param_18 != 0)" ( (binary_expression "param_18 != 0" identifier != number_literal) )) (compound_statement "{\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }" { (expression_statement "BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);" (call_expression "BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18)" identifier (argument_list "(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18)" ( identifier , (string_literal ""The subject name appears to be ok, checking data base for clashes\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) })) (if_statement "if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" if (parenthesized_expression "(param_13 == 0)" ( (binary_expression "param_13 == 0" identifier == number_literal) )) (compound_statement "{\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }" { (expression_statement "ctx = (X509V3_CTX *)0xffffffff;" (assignment_expression "ctx = (X509V3_CTX *)0xffffffff" identifier = (cast_expression "(X509V3_CTX *)0xffffffff" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pXVar4 = X509_NAME_dup(local_b8);" (assignment_expression "pXVar4 = X509_NAME_dup(local_b8)" identifier = (call_expression "X509_NAME_dup(local_b8)" identifier (argument_list "(local_b8)" ( identifier )))) ;) (if_statement "if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }" if (parenthesized_expression "(pXVar4 != (X509_NAME *)0x0)" ( (binary_expression "pXVar4 != (X509_NAME *)0x0" identifier != (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }" { (while_statement "while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }" while (parenthesized_expression "(iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5)" ( (comma_expression "iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5" (assignment_expression "iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx)" identifier = (call_expression "X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx)" identifier (argument_list "(pXVar4,0x30,(int)ctx)" ( identifier , number_literal , (cast_expression "(int)ctx" ( (type_descriptor "int" primitive_type) ) identifier) )))) , (binary_expression "-1 < iVar5" number_literal < identifier)) )) (compound_statement "{\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }" { (expression_statement "ctx = (X509V3_CTX *)(iVar5 + -1);" (assignment_expression "ctx = (X509V3_CTX *)(iVar5 + -1)" identifier = (cast_expression "(X509V3_CTX *)(iVar5 + -1)" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -1)" ( (binary_expression "iVar5 + -1" identifier + number_literal) )))) ;) (expression_statement "pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);" (assignment_expression "pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5)" identifier = (call_expression "X509_NAME_delete_entry(pXVar4,iVar5)" identifier (argument_list "(pXVar4,iVar5)" ( identifier , identifier )))) ;) (expression_statement "X509_NAME_ENTRY_free(pXVar6);" (call_expression "X509_NAME_ENTRY_free(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier ))) ;) })) (expression_statement "iVar5 = X509_set_subject_name(local_e0,pXVar4);" (assignment_expression "iVar5 = X509_set_subject_name(local_e0,pXVar4)" identifier = (call_expression "X509_set_subject_name(local_e0,pXVar4)" identifier (argument_list "(local_e0,pXVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }" { (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier ))) ;) (goto_statement "goto LAB_0002e94f;" goto statement_identifier ;) })) (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier ))) ;) (goto_statement "goto LAB_0002e636;" goto statement_identifier ;) })) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" else (compound_statement "{\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" { (labeled_statement "LAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);" statement_identifier : (expression_statement "pXVar4 = X509_get_subject_name(local_e0);" (assignment_expression "pXVar4 = X509_get_subject_name(local_e0)" identifier = (call_expression "X509_get_subject_name(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;)) (expression_statement "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0)" identifier = (cast_expression "(ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_NAME_oneline(pXVar4,(char *)0x0,0)" identifier (argument_list "(pXVar4,(char *)0x0,0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))))) ;) (expression_statement "local_40 = pAVar25;" (assignment_expression "local_40 = pAVar25" identifier = identifier) ;) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" if (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" identifier != (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" { (expression_statement "iVar5 = BN_is_zero(local_a0);" (assignment_expression "iVar5 = BN_is_zero(local_a0)" identifier = (call_expression "BN_is_zero(local_a0)" identifier (argument_list "(local_a0)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0)" identifier = (cast_expression "(ASN1_INTEGER *)BN_bn2hex(local_a0)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "BN_bn2hex(local_a0)" identifier (argument_list "(local_a0)" ( identifier ))))) ;) }) (else_clause "else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" else (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" identifier = (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CRYPTO_strdup("00","../apps/ca.c",0x6c8)" identifier (argument_list "("00","../apps/ca.c",0x6c8)" ( (string_literal ""00"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal ))))) ;) }))) (expression_statement "pcVar15 = "../apps/ca.c";" (assignment_expression "pcVar15 = "../apps/ca.c"" identifier = (string_literal ""../apps/ca.c"" " string_content ")) ;) (expression_statement "local_48 = pAVar25;" (assignment_expression "local_48 = pAVar25" identifier = identifier) ;) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" if (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" { (labeled_statement "LAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);" statement_identifier : (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25)" identifier (argument_list "(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25)" ( identifier , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;)) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (if_statement "if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" if (parenthesized_expression "((char)local_40->length == '\0')" ( (binary_expression "(char)local_40->length == '\0'" (cast_expression "(char)local_40->length" ( (type_descriptor "char" primitive_type) ) (field_expression "local_40->length" identifier -> field_identifier)) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" { (expression_statement "CRYPTO_free(local_40);" (call_expression "CRYPTO_free(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" identifier = (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" identifier (argument_list "((char *)local_48,"../apps/ca.c",0x6d7)" ( (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""../apps/ca.c"" " string_content ") , number_literal ))))) ;) (expression_statement "local_40 = pAVar25;" (assignment_expression "local_40 = pAVar25" identifier = identifier) ;) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;" if (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002eab4;" goto statement_identifier ;)) })) (if_statement "if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" if (parenthesized_expression "((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0))" ( (binary_expression "(*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" (parenthesized_expression "(*local_8c == 0)" ( (binary_expression "*local_8c == 0" (pointer_expression "*local_8c" * identifier) == number_literal) )) || (parenthesized_expression "(ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" ( (comma_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0" (assignment_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54)" identifier = (call_expression "TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54)" identifier (argument_list "((TXT_DB *)*local_a4,5,&local_54)" ( (cast_expression "(TXT_DB *)*local_a4" ( (type_descriptor "TXT_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_a4" * identifier)) , number_literal , (pointer_expression "&local_54" & identifier) )))) , (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" identifier == (cast_expression "(OPENSSL_STRING *)0x0" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }" { (expression_statement "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);" (assignment_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54)" identifier = (call_expression "TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54)" identifier (argument_list "((TXT_DB *)*local_a4,3,&local_54)" ( (cast_expression "(TXT_DB *)*local_a4" ( (type_descriptor "TXT_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_a4" * identifier)) , number_literal , (pointer_expression "&local_54" & identifier) )))) ;) (if_statement "if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" if (parenthesized_expression "(ppcVar14 == (OPENSSL_STRING *)0x0)" ( (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" identifier == (cast_expression "(OPENSSL_STRING *)0x0" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" { (if_statement "if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" if (parenthesized_expression "(param_24 == 0)" ( (binary_expression "param_24 == 0" identifier == number_literal) )) (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );" (call_expression "BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    )" identifier (argument_list "(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    )" ( identifier , (string_literal ""Certificate Details:\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );" (assignment_expression "iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" identifier = (call_expression "X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" identifier (argument_list "(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , (binary_expression "param_22 | 0x208" identifier | number_literal) )))) ;) }) (else_clause "else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" else (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5)" identifier (argument_list "(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Certificate is to be certified until "" " string_content ") , identifier , identifier ))) ;) (expression_statement "a = (ASN1_TIME *)X509_get0_notAfter(local_e0);" (assignment_expression "a = (ASN1_TIME *)X509_get0_notAfter(local_e0)" identifier = (cast_expression "(ASN1_TIME *)X509_get0_notAfter(local_e0)" ( (type_descriptor "ASN1_TIME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_notAfter(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))))) ;) (expression_statement "iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);" (assignment_expression "iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a)" identifier = (call_expression "ASN1_TIME_print(*(BIO **)local_e4,a)" identifier (argument_list "(*(BIO **)local_e4,a)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier )))) ;) (if_statement "if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }" if (parenthesized_expression "(param_16 != (X509 *)0x0)" ( (binary_expression "param_16 != (X509 *)0x0" identifier != (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }" { (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" identifier (argument_list "(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal "" (%ld days)"" " string_content ") , identifier , identifier )))) ;) })) (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5)" identifier (argument_list "(*(BIO **)local_e4,"\n",iVar5,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""\n"" " escape_sequence ") , identifier , identifier )))) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" if (parenthesized_expression "(param_17 == 0)" ( (binary_expression "param_17 == 0" identifier == number_literal) )) (compound_statement "{\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }" { (expression_statement "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5)" identifier (argument_list "(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Sign the certificate? [y/n]:"" " string_content ") , identifier , identifier ))) ;) (expression_statement "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0)" identifier (argument_list "(*(BIO **)local_e4,0xb,0,(void *)0x0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "local_3c._3_1_ = 0;" (assignment_expression "local_3c._3_1_ = 0" (field_expression "local_3c._3_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);" (assignment_expression "pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" identifier = (call_expression "fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" identifier (argument_list "((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" ( (cast_expression "(char *)((int)&local_3c + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_3c + 3)" ( (binary_expression "(int)&local_3c + 3" (cast_expression "(int)&local_3c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_3c" & identifier)) + number_literal) ))) , number_literal , (pointer_expression "*(FILE **)PTR_stdin_000bdf94" * (cast_expression "(FILE **)PTR_stdin_000bdf94" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) )))) ;) (if_statement "if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" identifier (argument_list "(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n"" " string_content escape_sequence ") , number_literal , number_literal ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" else (compound_statement "{\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" { (expression_statement "uVar17 = local_3c._3_1_ & 0xffffffdf;" (assignment_expression "uVar17 = local_3c._3_1_ & 0xffffffdf" identifier = (binary_expression "local_3c._3_1_ & 0xffffffdf" (field_expression "local_3c._3_1_" identifier . field_identifier) & number_literal)) ;) (if_statement "if ((char)uVar17 == 'Y') goto LAB_0002ebcc;" if (parenthesized_expression "((char)uVar17 == 'Y')" ( (binary_expression "(char)uVar17 == 'Y'" (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'Y'" ' character ')) )) (goto_statement "goto LAB_0002ebcc;" goto statement_identifier ;)) (expression_statement "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);" (call_expression "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17)" identifier (argument_list "(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" else (compound_statement "{\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" { (labeled_statement "LAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;" statement_identifier : (expression_statement "local_dc = (X509_NAME *)local_e4;" (assignment_expression "local_dc = (X509_NAME *)local_e4" identifier = (cast_expression "(X509_NAME *)local_e4" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);" (assignment_expression "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0)" identifier = (cast_expression "(EVP_PKEY *)X509_get0_pubkey(local_e0)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_pubkey(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))))) ;) (expression_statement "iVar5 = EVP_PKEY_missing_parameters(local_e4);" (assignment_expression "iVar5 = EVP_PKEY_missing_parameters(local_e4)" identifier = (call_expression "EVP_PKEY_missing_parameters(local_e4)" identifier (argument_list "(local_e4)" ( identifier )))) ;) (if_statement "if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" if (parenthesized_expression "((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0))" ( (binary_expression "(iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)" ( (comma_expression "iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0" (assignment_expression "iVar5 = EVP_PKEY_missing_parameters(local_9c)" identifier = (call_expression "EVP_PKEY_missing_parameters(local_9c)" identifier (argument_list "(local_9c)" ( identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" { (expression_statement "EVP_PKEY_copy_parameters(local_e4,local_9c);" (call_expression "EVP_PKEY_copy_parameters(local_e4,local_9c)" identifier (argument_list "(local_e4,local_9c)" ( identifier , identifier ))) ;) })) (expression_statement "local_d4 = (char *)local_dc;" (assignment_expression "local_d4 = (char *)local_dc" identifier = (cast_expression "(char *)local_dc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);" (assignment_expression "uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90)" identifier = (call_expression "FUN_0004e150(local_e0,local_9c,local_94,local_90)" identifier (argument_list "(local_e0,local_9c,local_94,local_90)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);" (assignment_expression "uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar33 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar33 >> 0x20)" ( (binary_expression "(ulonglong)uVar33 >> 0x20" (cast_expression "(ulonglong)uVar33" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" if (parenthesized_expression "((int)uVar33 != 0)" ( (binary_expression "(int)uVar33 != 0" (cast_expression "(int)uVar33" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" { (expression_statement "uVar34 = 0x742;" (assignment_expression "uVar34 = 0x742" identifier = number_literal) ;) (expression_statement "local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);" (assignment_expression "local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742)" identifier = (call_expression "CRYPTO_strdup("V","../apps/ca.c",0x742)" identifier (argument_list "("V","../apps/ca.c",0x742)" ( (string_literal ""V"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal )))) ;) (expression_statement "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);" (assignment_expression "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" identifier = (cast_expression "(EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" identifier (argument_list "(local_e0,pcVar15,uVar34,uVar12)" ( identifier , identifier , identifier , identifier ))))) ;) (expression_statement "local_dc = *(X509_NAME **)local_e4;" (assignment_expression "local_dc = *(X509_NAME **)local_e4" identifier = (pointer_expression "*(X509_NAME **)local_e4" * (cast_expression "(X509_NAME **)local_e4" ( (type_descriptor "X509_NAME **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");" (assignment_expression "local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" identifier = (cast_expression "(void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" identifier (argument_list "((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" ( (cast_expression "(undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1)" ( (binary_expression "(int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1" (cast_expression "(int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((ASN1_INTEGER *)local_dc)->\n                                                                   length" & (field_expression "((ASN1_INTEGER *)local_dc)->\n                                                                   length" (parenthesized_expression "((ASN1_INTEGER *)local_dc)" ( (cast_expression "(ASN1_INTEGER *)local_dc" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) ))) , (string_literal ""row expdate"" " string_content ") ))))) ;) (expression_statement "memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);" (call_expression "memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" identifier (argument_list "(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" ( identifier , (pointer_expression "*(void **)((int)local_e4 + 8)" * (cast_expression "(void **)((int)local_e4 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_e4 + 8)" ( (binary_expression "(int)local_e4 + 8" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(size_t *)local_e4" * (cast_expression "(size_t *)local_e4" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "*(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;" (assignment_expression "*(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0" (pointer_expression "*(undefined1 *)((int)local_50 + *(size_t *)local_e4)" * (cast_expression "(undefined1 *)((int)local_50 + *(size_t *)local_e4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_50 + *(size_t *)local_e4)" ( (binary_expression "(int)local_50 + *(size_t *)local_e4" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(size_t *)local_e4" * (cast_expression "(size_t *)local_e4" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) = number_literal) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);" (assignment_expression "local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748)" identifier = (call_expression "CRYPTO_strdup("unknown","../apps/ca.c",0x748)" identifier (argument_list "("unknown","../apps/ca.c",0x748)" ( (string_literal ""unknown"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal )))) ;) (if_statement "if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" if (parenthesized_expression "((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0))" ( (binary_expression "(((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)" (parenthesized_expression "(((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0))" ( (binary_expression "((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)" (parenthesized_expression "((local_54 == (char *)0x0) || (local_50 == (void *)0x0))" ( (binary_expression "(local_54 == (char *)0x0) || (local_50 == (void *)0x0)" (parenthesized_expression "(local_54 == (char *)0x0)" ( (binary_expression "local_54 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_50 == (void *)0x0)" ( (binary_expression "local_50 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(local_44 == (char *)0x0)" ( (binary_expression "local_44 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(local_40 == (ASN1_INTEGER *)0x0)" ( (binary_expression "local_40 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" { (expression_statement "BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);" (call_expression "BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44)" identifier (argument_list "(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44)" ( (pointer_expression "*(BIO **)local_d4" * (cast_expression "(BIO **)local_d4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" else (compound_statement "{\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" { (expression_statement "local_e4 = (EVP_PKEY *)local_d4;" (assignment_expression "local_e4 = (EVP_PKEY *)local_d4" identifier = (cast_expression "(EVP_PKEY *)local_d4" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44)" identifier = (cast_expression "(ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00073440(0x1c,"row space",local_44,local_44)" identifier (argument_list "(0x1c,"row space",local_44,local_44)" ( number_literal , (string_literal ""row space"" " string_content ") , identifier , identifier ))))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);" do (compound_statement "{\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              }" { (expression_statement "(&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];" (assignment_expression "(&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5]" (subscript_expression "(&pAVar25->length)[iVar5]" (parenthesized_expression "(&pAVar25->length)" ( (pointer_expression "&pAVar25->length" & (field_expression "pAVar25->length" identifier -> field_identifier)) )) [ identifier ]) = (cast_expression "(int)(&local_54)[iVar5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&local_54)[iVar5]" (parenthesized_expression "(&local_54)" ( (pointer_expression "&local_54" & identifier) )) [ identifier ]))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 6)" ( (binary_expression "iVar5 != 6" identifier != number_literal) )) ;) (expression_statement "pAVar25[1].data = (uchar *)0x0;" (assignment_expression "pAVar25[1].data = (uchar *)0x0" (field_expression "pAVar25[1].data" (subscript_expression "pAVar25[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);" (assignment_expression "iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" identifier = (call_expression "TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" identifier (argument_list "((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" ( (cast_expression "(TXT_DB *)*local_a4" ( (type_descriptor "TXT_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_a4" * identifier)) , (cast_expression "(OPENSSL_STRING *)pAVar25" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" { (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" identifier (argument_list "((void *)0x0)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" identifier (argument_list "(local_d8)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "*local_b0 = local_e0;" (assignment_expression "*local_b0 = local_e0" (pointer_expression "*local_b0" * identifier) = identifier) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x1;" (assignment_expression "local_e4 = (EVP_PKEY *)0x1" identifier = (cast_expression "(EVP_PKEY *)0x1" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e343;" goto statement_identifier ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0)" identifier (argument_list "(*(BIO **)local_e4,"failed to update database\n",0,0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""failed to update database\n"" " string_content escape_sequence ") , number_literal , number_literal ))) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));" (call_expression "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10))" identifier (argument_list "(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10))" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""TXT_DB error number %ld\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(*local_a4 + 0x10)" * (cast_expression "(undefined4 *)(*local_a4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_a4 + 0x10)" ( (binary_expression "*local_a4 + 0x10" (pointer_expression "*local_a4" * identifier) + number_literal) )))) ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) }))) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "pAVar25 = local_48;" (assignment_expression "pAVar25 = local_48" identifier = identifier) ;) (expression_statement "ppcVar35 = extraout_ECX;" (assignment_expression "ppcVar35 = extraout_ECX" identifier = identifier) ;) (expression_statement "BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);" (call_expression "BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX)" identifier (argument_list "(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX)" ( identifier , (string_literal ""ERROR:Serial number %s has already been issued,\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = "      check the database/serial_file for corruption\n";" (assignment_expression "pcVar15 = "      check the database/serial_file for corruption\n"" identifier = (string_literal ""      check the database/serial_file for corruption\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" else (compound_statement "{\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" { (expression_statement "pcVar15 = "ERROR:There is already a certificate for %s\n";" (assignment_expression "pcVar15 = "ERROR:There is already a certificate for %s\n"" identifier = (string_literal ""ERROR:There is already a certificate for %s\n"" " string_content escape_sequence ")) ;) (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "pAVar25 = local_40;" (assignment_expression "pAVar25 = local_40" identifier = identifier) ;) (expression_statement "ppcVar35 = ppcVar14;" (assignment_expression "ppcVar35 = ppcVar14" identifier = identifier) ;) }))) (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" identifier (argument_list "(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , identifier )))) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5)" identifier (argument_list "(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""The matching entry has the following details\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "cVar2 = **ppcVar14;" (assignment_expression "cVar2 = **ppcVar14" identifier = (pointer_expression "**ppcVar14" * (pointer_expression "*ppcVar14" * identifier))) ;) (if_statement "if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'E')" ( (binary_expression "cVar2 == 'E'" identifier == (char_literal "'E'" ' character ')) )) (compound_statement "{\n                      pcVar15 = "Expired";\n                    }" { (expression_statement "pcVar15 = "Expired";" (assignment_expression "pcVar15 = "Expired"" identifier = (string_literal ""Expired"" " string_content ")) ;) }) (else_clause "else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" else (if_statement "if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'R')" ( (binary_expression "cVar2 == 'R'" identifier == (char_literal "'R'" ' character ')) )) (compound_statement "{\n                      pcVar15 = "Revoked";\n                    }" { (expression_statement "pcVar15 = "Revoked";" (assignment_expression "pcVar15 = "Revoked"" identifier = (string_literal ""Revoked"" " string_content ")) ;) }) (else_clause "else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" else (if_statement "if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'V')" ( (binary_expression "cVar2 == 'V'" identifier == (char_literal "'V'" ' character ')) )) (compound_statement "{\n                      pcVar15 = "Valid";\n                    }" { (expression_statement "pcVar15 = "Valid";" (assignment_expression "pcVar15 = "Valid"" identifier = (string_literal ""Valid"" " string_content ")) ;) }) (else_clause "else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" else (compound_statement "{\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" { (expression_statement "pcVar15 = "\ninvalid type, Data base error\n";" (assignment_expression "pcVar15 = "\ninvalid type, Data base error\n"" identifier = (string_literal ""\ninvalid type, Data base error\n"" " escape_sequence string_content escape_sequence ")) ;) }))))))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);" (call_expression "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX)" identifier (argument_list "(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Type          :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar12 = extraout_EDX_00;" (assignment_expression "uVar12 = extraout_EDX_00" identifier = identifier) ;) (if_statement "if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" if (parenthesized_expression "(**ppcVar14 == 'R')" ( (binary_expression "**ppcVar14 == 'R'" (pointer_expression "**ppcVar14" * (pointer_expression "*ppcVar14" * identifier)) == (char_literal "'R'" ' character ')) )) (compound_statement "{\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" { (expression_statement "pcVar15 = ppcVar14[1];" (assignment_expression "pcVar15 = ppcVar14[1]" identifier = (subscript_expression "ppcVar14[1]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        pcVar15 = "undef";\n                      }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);" (call_expression "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00)" identifier (argument_list "(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Was revoked on:%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar12 = extraout_EDX_03;" (assignment_expression "uVar12 = extraout_EDX_03" identifier = identifier) ;) })) (expression_statement "pcVar15 = ppcVar14[1];" (assignment_expression "pcVar15 = ppcVar14[1]" identifier = (subscript_expression "ppcVar14[1]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);" (call_expression "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12)" identifier (argument_list "(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Expires on    :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = ppcVar14[3];" (assignment_expression "pcVar15 = ppcVar14[3]" identifier = (subscript_expression "ppcVar14[3]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);" (call_expression "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01)" identifier (argument_list "(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Serial Number :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = ppcVar14[4];" (assignment_expression "pcVar15 = ppcVar14[4]" identifier = (subscript_expression "ppcVar14[4]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);" (call_expression "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02)" identifier (argument_list "(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""File name     :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = ppcVar14[5];" (assignment_expression "pcVar15 = ppcVar14[5]" identifier = (subscript_expression "ppcVar14[5]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);" (call_expression "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14)" identifier (argument_list "(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Subject Name  :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) }))) (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx)" identifier (argument_list "(DAT_000c458c,"Memory allocation failure\n",ctx,ctx)" ( identifier , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;" statement_identifier : (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) })) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }))) }) (else_clause "else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" else (compound_statement "{\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" { (expression_statement "pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);" (assignment_expression "pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12)" identifier = (cast_expression "(X509_NAME *)FUN_00074ec0(param_10,param_11,param_12)" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00074ec0(param_10,param_11,param_12)" identifier (argument_list "(param_10,param_11,param_12)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }" if (parenthesized_expression "(pXVar4 != (X509_NAME *)0x0)" ( (binary_expression "pXVar4 != (X509_NAME *)0x0" identifier != (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }" { (expression_statement "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);" (call_expression "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4)" identifier (argument_list "((X509_REQ *)local_b4,pXVar4)" ( (cast_expression "(X509_REQ *)local_b4" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier ))) ;) (goto_statement "goto LAB_0002dcb3;" goto statement_identifier ;) })) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" identifier (argument_list "(DAT_000c458c)" ( identifier ))) ;) (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0002e2e5:\n  ppcVar14 = &local_54;" statement_identifier : (expression_statement "ppcVar14 = &local_54;" (assignment_expression "ppcVar14 = &local_54" identifier = (pointer_expression "&local_54" & identifier)) ;)) (expression_statement "local_dc = (X509_NAME *)pAVar25;" (assignment_expression "local_dc = (X509_NAME *)pAVar25" identifier = (cast_expression "(X509_NAME *)pAVar25" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);" do (compound_statement "{\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  }" { (expression_statement "ppcVar35 = ppcVar14 + 1;" (assignment_expression "ppcVar35 = ppcVar14 + 1" identifier = (binary_expression "ppcVar14 + 1" identifier + number_literal)) ;) (expression_statement "CRYPTO_free(*ppcVar14);" (call_expression "CRYPTO_free(*ppcVar14)" identifier (argument_list "(*ppcVar14)" ( (pointer_expression "*ppcVar14" * identifier) ))) ;) (expression_statement "ppcVar14 = ppcVar35;" (assignment_expression "ppcVar14 = ppcVar35" identifier = identifier) ;) }) while (parenthesized_expression "((OPENSSL_STRING *)&local_3c != ppcVar35)" ( (binary_expression "(OPENSSL_STRING *)&local_3c != ppcVar35" (cast_expression "(OPENSSL_STRING *)&local_3c" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3c" & identifier)) != identifier) )) ;) (expression_statement "CRYPTO_free(local_dc);" (call_expression "CRYPTO_free(local_dc)" identifier (argument_list "(local_dc)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" identifier (argument_list "(local_d8)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "X509_free(local_e0);" (call_expression "X509_free(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))) ;) (labeled_statement "LAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_e4;\n  }" { (return_statement "return local_e4;" return identifier ;) }))) comment (expression_statement "FUN_0007d010();" (call_expression "FUN_0007d010()" identifier (argument_list "()" ( ))) ;) (labeled_statement "joined_r0x0002efd1:\n  pbVar24 = pbVar10;" statement_identifier : (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" identifier = identifier) ;)) (if_statement "if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" if (parenthesized_expression "(pXVar6 != (X509_NAME_ENTRY *)0x0)" ( (binary_expression "pXVar6 != (X509_NAME_ENTRY *)0x0" identifier != (cast_expression "(X509_NAME_ENTRY *)0x0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" { (labeled_statement "LAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;" statement_identifier : (expression_statement "pbVar21 = (byte *)0xffffffff;" (assignment_expression "pbVar21 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);" (assignment_expression "iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0)" identifier = (call_expression "X509_NAME_add_entry(local_b8,pXVar6,-1,0)" identifier (argument_list "(local_b8,pXVar6,-1,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" identifier = identifier) ;) (if_statement "if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" { (expression_statement "pcVar15 = "Memory allocation failure\n";" (assignment_expression "pcVar15 = "Memory allocation failure\n"" identifier = (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_0002e14e;" goto statement_identifier ;) (while_statement "while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar29 = *pbVar24 < *pbVar10;" (assignment_expression "bVar29 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar28 = *pbVar24 == *pbVar10;" (assignment_expression "bVar28 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (!bVar28) break;" if (parenthesized_expression "(!bVar28)" ( (unary_expression "!bVar28" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x0002e27e:\n    if (iVar5 == 0) break;" statement_identifier : (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;) (expression_statement "bVar28 = (!bVar29 && !bVar28) == bVar29;" (assignment_expression "bVar28 = (!bVar29 && !bVar28) == bVar29" identifier = (binary_expression "(!bVar29 && !bVar28) == bVar29" (parenthesized_expression "(!bVar29 && !bVar28)" ( (binary_expression "!bVar29 && !bVar28" (unary_expression "!bVar29" ! identifier) && (unary_expression "!bVar28" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" if (parenthesized_expression "(bVar28)" ( identifier )) (compound_statement "{\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }" { (labeled_statement "LAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);" statement_identifier : (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar15 = "The %s field needed to be supplied and was missing\n";" (assignment_expression "pcVar15 = "The %s field needed to be supplied and was missing\n"" identifier = (string_literal ""The %s field needed to be supplied and was missing\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" else (compound_statement "{\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" { (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"match";" (assignment_expression "pbVar10 = (byte *)"match"" identifier = (cast_expression "(byte *)"match"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""match"" " string_content "))) ;) (do_statement "do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);" do (compound_statement "{\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar31 = *pbVar24 < *pbVar10;" (assignment_expression "bVar31 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar28 = *pbVar24 == *pbVar10;" (assignment_expression "bVar28 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar28)" ( identifier )) ;) (if_statement "if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" if (parenthesized_expression "((!bVar31 && !bVar28) == bVar31)" ( (binary_expression "(!bVar31 && !bVar28) == bVar31" (parenthesized_expression "(!bVar31 && !bVar28)" ( (binary_expression "!bVar31 && !bVar28" (unary_expression "!bVar31" ! identifier) && (unary_expression "!bVar28" ! identifier)) )) == identifier) )) (compound_statement "{\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }" { (labeled_statement "LAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);" statement_identifier : (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar15 = "The mandatory %s field was missing\n";" (assignment_expression "pcVar15 = "The mandatory %s field was missing\n"" identifier = (string_literal ""The mandatory %s field was missing\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" else (compound_statement "{\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" { (labeled_statement "LAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";" statement_identifier : (expression_statement "pcVar15 = "%s:invalid type in \'policy\' configuration\n";" (assignment_expression "pcVar15 = "%s:invalid type in \'policy\' configuration\n"" identifier = (string_literal ""%s:invalid type in \'policy\' configuration\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;)) }))) }))) (labeled_statement "LAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);" statement_identifier : (expression_statement "BIO_printf(DAT_000c458c,pcVar15,pbVar21);" (call_expression "BIO_printf(DAT_000c458c,pcVar15,pbVar21)" identifier (argument_list "(DAT_000c458c,pcVar15,pbVar21)" ( identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: int do_body(X509 * * xret, EVP_PKEY * pkey, X509 * x509, EVP_MD * dgst,\n   stack_st_OPENSSL_STRING * sigopts, stack_st_CONF_VALUE * policy, CA_DB * db, BIGNUM * serial,\n   char * subj, ulong chtype, int multirdn, int email_dn, char * startdate, char * enddate, long\n   days, int batch, int verbose, X509_REQ * req, char * ext_sect, CONF * lconf, ulong certopt, ulong\n   nameopt, int default_op, int ext_copy, int selfsign, CA_DB * db) */\n\nint __regparm3\ndo_body(X509 **xret,EVP_PKEY *pkey,X509 *x509,EVP_MD *dgst,stack_st_OPENSSL_STRING *sigopts,\n       stack_st_CONF_VALUE *policy,CA_DB *db,BIGNUM *serial,char *subj,ulong chtype,int multirdn,\n       int email_dn,char *startdate,char *enddate,long days,int batch,int verbose,X509_REQ *req,\n       char *ext_sect,CONF *lconf,ulong certopt,ulong nameopt,int default_op,int ext_copy,\n       int selfsign,CA_DB *db_1)\n\n{\n  uchar uVar1;\n  char cVar2;\n  int iVar3;\n  BIO *pBVar4;\n  CONF *conf;\n  X509_NAME *pXVar5;\n  int iVar6;\n  X509_NAME_ENTRY *pXVar7;\n  ASN1_STRING *pAVar8;\n  ASN1_OBJECT *o;\n  char *pcVar9;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  ASN1_TIME *a;\n  char *pcVar15;\n  uint uVar16;\n  int iVar17;\n  int loc;\n  uchar *puVar18;\n  X509 *pXVar19;\n  OPENSSL_STRING *extraout_ECX;\n  char *pcVar20;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  undefined4 extraout_EDX_05;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  OPENSSL_STRING *ppcVar27;\n  OPENSSL_STRING *ppcVar28;\n  int in_GS_OFFSET;\n  undefined1 uVar29;\n  bool bVar30;\n  bool bVar31;\n  undefined1 uVar32;\n  bool bVar33;\n  byte bVar34;\n  OPENSSL_STRING pcVar35;\n  undefined4 uVar36;\n  OPENSSL_STRING *ppcVar37;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  BIO **local_d4;\n  char *local_d0;\n  stack_st_CONF_VALUE *local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  X509 **local_b0;\n  X509 *local_ac;\n  CONF *local_a8;\n  BIGNUM *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  char *local_98;\n  EVP_MD *local_94;\n  stack_st_OPENSSL_STRING *local_90;\n  CA_DB *local_8c;\n  char *local_88;\n  CONF *local_84;\n  byte *local_80;\n  int tdays;\n  OPENSSL_STRING row [6];\n  undefined1 local_3c [3];\n  char buf [25];\n  \n  bVar34 = 0;\n  local_94 = dgst;\n  local_90 = sigopts;\n  local_88 = enddate;\n  local_cc = policy;\n  local_98 = (char *)days;\n  local_8c = db;\n  local_b4 = (X509V3_CTX *)ext_sect;\n  local_a4 = serial;\n  local_a8 = lconf;\n  local_a0 = (BIGNUM *)subj;\n  local_84 = (CONF *)certopt;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  row[0] = (OPENSSL_STRING)0x0;\n  row[1] = (OPENSSL_STRING)0x0;\n  row[2] = (OPENSSL_STRING)0x0;\n  row[3] = (OPENSSL_STRING)0x0;\n  row[4] = (OPENSSL_STRING)0x0;\n  row[5] = (OPENSSL_STRING)0x0;\n  local_b0 = xret;\n  local_ac = (X509 *)x509;\n  local_9c = (EVP_PKEY *)pkey;\n  if (chtype == 0) {\nLAB_0002dcb3:\n    if (ext_copy != 0) {\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&bio_err;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6) {\n      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);\n      o = X509_NAME_ENTRY_get_object(pXVar7);\n      iVar6 = OBJ_obj2nid(o);\n      if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);\n    if (pXVar5 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors((BIO *)bio_err);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar27 = row;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar28 = ppcVar27 + 1;\n    CRYPTO_free(*ppcVar27);\n    ppcVar27 = ppcVar28;\n  } while ((OPENSSL_STRING *)local_3c != ppcVar28);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)local_e4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar7 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar6 == 0) {\n      pcVar20 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar6 = iVar6 + -1;\n    bVar31 = *pbVar24 < *pbVar10;\n    bVar30 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    if (!bVar30) break;\ncode_r0x0002e27e:\n    if (iVar6 == 0) break;\n  }\n  bVar33 = false;\n  bVar30 = (!bVar31 && !bVar30) == bVar31;\n  if (bVar30) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar20 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar6 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    } while (bVar30);\n    if ((!bVar33 && !bVar30) == bVar33) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf((BIO *)bio_err,pcVar20,pbVar21);\n  goto LAB_0002e2c6;\n}\n\n" comment comment (function_definition "int __regparm3\ndo_body(X509 **xret,EVP_PKEY *pkey,X509 *x509,EVP_MD *dgst,stack_st_OPENSSL_STRING *sigopts,\n       stack_st_CONF_VALUE *policy,CA_DB *db,BIGNUM *serial,char *subj,ulong chtype,int multirdn,\n       int email_dn,char *startdate,char *enddate,long days,int batch,int verbose,X509_REQ *req,\n       char *ext_sect,CONF *lconf,ulong certopt,ulong nameopt,int default_op,int ext_copy,\n       int selfsign,CA_DB *db_1)\n\n{\n  uchar uVar1;\n  char cVar2;\n  int iVar3;\n  BIO *pBVar4;\n  CONF *conf;\n  X509_NAME *pXVar5;\n  int iVar6;\n  X509_NAME_ENTRY *pXVar7;\n  ASN1_STRING *pAVar8;\n  ASN1_OBJECT *o;\n  char *pcVar9;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  ASN1_TIME *a;\n  char *pcVar15;\n  uint uVar16;\n  int iVar17;\n  int loc;\n  uchar *puVar18;\n  X509 *pXVar19;\n  OPENSSL_STRING *extraout_ECX;\n  char *pcVar20;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  undefined4 extraout_EDX_05;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  OPENSSL_STRING *ppcVar27;\n  OPENSSL_STRING *ppcVar28;\n  int in_GS_OFFSET;\n  undefined1 uVar29;\n  bool bVar30;\n  bool bVar31;\n  undefined1 uVar32;\n  bool bVar33;\n  byte bVar34;\n  OPENSSL_STRING pcVar35;\n  undefined4 uVar36;\n  OPENSSL_STRING *ppcVar37;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  BIO **local_d4;\n  char *local_d0;\n  stack_st_CONF_VALUE *local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  X509 **local_b0;\n  X509 *local_ac;\n  CONF *local_a8;\n  BIGNUM *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  char *local_98;\n  EVP_MD *local_94;\n  stack_st_OPENSSL_STRING *local_90;\n  CA_DB *local_8c;\n  char *local_88;\n  CONF *local_84;\n  byte *local_80;\n  int tdays;\n  OPENSSL_STRING row [6];\n  undefined1 local_3c [3];\n  char buf [25];\n  \n  bVar34 = 0;\n  local_94 = dgst;\n  local_90 = sigopts;\n  local_88 = enddate;\n  local_cc = policy;\n  local_98 = (char *)days;\n  local_8c = db;\n  local_b4 = (X509V3_CTX *)ext_sect;\n  local_a4 = serial;\n  local_a8 = lconf;\n  local_a0 = (BIGNUM *)subj;\n  local_84 = (CONF *)certopt;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  row[0] = (OPENSSL_STRING)0x0;\n  row[1] = (OPENSSL_STRING)0x0;\n  row[2] = (OPENSSL_STRING)0x0;\n  row[3] = (OPENSSL_STRING)0x0;\n  row[4] = (OPENSSL_STRING)0x0;\n  row[5] = (OPENSSL_STRING)0x0;\n  local_b0 = xret;\n  local_ac = (X509 *)x509;\n  local_9c = (EVP_PKEY *)pkey;\n  if (chtype == 0) {\nLAB_0002dcb3:\n    if (ext_copy != 0) {\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&bio_err;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6) {\n      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);\n      o = X509_NAME_ENTRY_get_object(pXVar7);\n      iVar6 = OBJ_obj2nid(o);\n      if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);\n    if (pXVar5 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors((BIO *)bio_err);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar27 = row;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar28 = ppcVar27 + 1;\n    CRYPTO_free(*ppcVar27);\n    ppcVar27 = ppcVar28;\n  } while ((OPENSSL_STRING *)local_3c != ppcVar28);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)local_e4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar7 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar6 == 0) {\n      pcVar20 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar6 = iVar6 + -1;\n    bVar31 = *pbVar24 < *pbVar10;\n    bVar30 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    if (!bVar30) break;\ncode_r0x0002e27e:\n    if (iVar6 == 0) break;\n  }\n  bVar33 = false;\n  bVar30 = (!bVar31 && !bVar30) == bVar31;\n  if (bVar30) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar20 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar6 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    } while (bVar30);\n    if ((!bVar33 && !bVar30) == bVar33) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf((BIO *)bio_err,pcVar20,pbVar21);\n  goto LAB_0002e2c6;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "do_body(X509 **xret,EVP_PKEY *pkey,X509 *x509,EVP_MD *dgst,stack_st_OPENSSL_STRING *sigopts,\n       stack_st_CONF_VALUE *policy,CA_DB *db,BIGNUM *serial,char *subj,ulong chtype,int multirdn,\n       int email_dn,char *startdate,char *enddate,long days,int batch,int verbose,X509_REQ *req,\n       char *ext_sect,CONF *lconf,ulong certopt,ulong nameopt,int default_op,int ext_copy,\n       int selfsign,CA_DB *db_1)" identifier (parameter_list "(X509 **xret,EVP_PKEY *pkey,X509 *x509,EVP_MD *dgst,stack_st_OPENSSL_STRING *sigopts,\n       stack_st_CONF_VALUE *policy,CA_DB *db,BIGNUM *serial,char *subj,ulong chtype,int multirdn,\n       int email_dn,char *startdate,char *enddate,long days,int batch,int verbose,X509_REQ *req,\n       char *ext_sect,CONF *lconf,ulong certopt,ulong nameopt,int default_op,int ext_copy,\n       int selfsign,CA_DB *db_1)" ( (parameter_declaration "X509 **xret" type_identifier (pointer_declarator "**xret" * (pointer_declarator "*xret" * identifier))) , (parameter_declaration "EVP_PKEY *pkey" type_identifier (pointer_declarator "*pkey" * identifier)) , (parameter_declaration "X509 *x509" type_identifier (pointer_declarator "*x509" * identifier)) , (parameter_declaration "EVP_MD *dgst" type_identifier (pointer_declarator "*dgst" * identifier)) , (parameter_declaration "stack_st_OPENSSL_STRING *sigopts" type_identifier (pointer_declarator "*sigopts" * identifier)) , (parameter_declaration "stack_st_CONF_VALUE *policy" type_identifier (pointer_declarator "*policy" * identifier)) , (parameter_declaration "CA_DB *db" type_identifier (pointer_declarator "*db" * identifier)) , (parameter_declaration "BIGNUM *serial" type_identifier (pointer_declarator "*serial" * identifier)) , (parameter_declaration "char *subj" primitive_type (pointer_declarator "*subj" * identifier)) , (parameter_declaration "ulong chtype" type_identifier identifier) , (parameter_declaration "int multirdn" primitive_type identifier) , (parameter_declaration "int email_dn" primitive_type identifier) , (parameter_declaration "char *startdate" primitive_type (pointer_declarator "*startdate" * identifier)) , (parameter_declaration "char *enddate" primitive_type (pointer_declarator "*enddate" * identifier)) , (parameter_declaration "long days" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int batch" primitive_type identifier) , (parameter_declaration "int verbose" primitive_type identifier) , (parameter_declaration "X509_REQ *req" type_identifier (pointer_declarator "*req" * identifier)) , (parameter_declaration "char *ext_sect" primitive_type (pointer_declarator "*ext_sect" * identifier)) , (parameter_declaration "CONF *lconf" type_identifier (pointer_declarator "*lconf" * identifier)) , (parameter_declaration "ulong certopt" type_identifier identifier) , (parameter_declaration "ulong nameopt" type_identifier identifier) , (parameter_declaration "int default_op" primitive_type identifier) , (parameter_declaration "int ext_copy" primitive_type identifier) , (parameter_declaration "int selfsign" primitive_type identifier) , (parameter_declaration "CA_DB *db_1" type_identifier (pointer_declarator "*db_1" * identifier)) ))) (compound_statement "{\n  uchar uVar1;\n  char cVar2;\n  int iVar3;\n  BIO *pBVar4;\n  CONF *conf;\n  X509_NAME *pXVar5;\n  int iVar6;\n  X509_NAME_ENTRY *pXVar7;\n  ASN1_STRING *pAVar8;\n  ASN1_OBJECT *o;\n  char *pcVar9;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  ASN1_TIME *a;\n  char *pcVar15;\n  uint uVar16;\n  int iVar17;\n  int loc;\n  uchar *puVar18;\n  X509 *pXVar19;\n  OPENSSL_STRING *extraout_ECX;\n  char *pcVar20;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  undefined4 extraout_EDX_05;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  OPENSSL_STRING *ppcVar27;\n  OPENSSL_STRING *ppcVar28;\n  int in_GS_OFFSET;\n  undefined1 uVar29;\n  bool bVar30;\n  bool bVar31;\n  undefined1 uVar32;\n  bool bVar33;\n  byte bVar34;\n  OPENSSL_STRING pcVar35;\n  undefined4 uVar36;\n  OPENSSL_STRING *ppcVar37;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  BIO **local_d4;\n  char *local_d0;\n  stack_st_CONF_VALUE *local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  X509 **local_b0;\n  X509 *local_ac;\n  CONF *local_a8;\n  BIGNUM *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  char *local_98;\n  EVP_MD *local_94;\n  stack_st_OPENSSL_STRING *local_90;\n  CA_DB *local_8c;\n  char *local_88;\n  CONF *local_84;\n  byte *local_80;\n  int tdays;\n  OPENSSL_STRING row [6];\n  undefined1 local_3c [3];\n  char buf [25];\n  \n  bVar34 = 0;\n  local_94 = dgst;\n  local_90 = sigopts;\n  local_88 = enddate;\n  local_cc = policy;\n  local_98 = (char *)days;\n  local_8c = db;\n  local_b4 = (X509V3_CTX *)ext_sect;\n  local_a4 = serial;\n  local_a8 = lconf;\n  local_a0 = (BIGNUM *)subj;\n  local_84 = (CONF *)certopt;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  row[0] = (OPENSSL_STRING)0x0;\n  row[1] = (OPENSSL_STRING)0x0;\n  row[2] = (OPENSSL_STRING)0x0;\n  row[3] = (OPENSSL_STRING)0x0;\n  row[4] = (OPENSSL_STRING)0x0;\n  row[5] = (OPENSSL_STRING)0x0;\n  local_b0 = xret;\n  local_ac = (X509 *)x509;\n  local_9c = (EVP_PKEY *)pkey;\n  if (chtype == 0) {\nLAB_0002dcb3:\n    if (ext_copy != 0) {\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&bio_err;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6) {\n      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);\n      o = X509_NAME_ENTRY_get_object(pXVar7);\n      iVar6 = OBJ_obj2nid(o);\n      if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);\n    if (pXVar5 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors((BIO *)bio_err);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar27 = row;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar28 = ppcVar27 + 1;\n    CRYPTO_free(*ppcVar27);\n    ppcVar27 = ppcVar28;\n  } while ((OPENSSL_STRING *)local_3c != ppcVar28);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)local_e4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar7 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar6 == 0) {\n      pcVar20 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar6 = iVar6 + -1;\n    bVar31 = *pbVar24 < *pbVar10;\n    bVar30 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    if (!bVar30) break;\ncode_r0x0002e27e:\n    if (iVar6 == 0) break;\n  }\n  bVar33 = false;\n  bVar30 = (!bVar31 && !bVar30) == bVar31;\n  if (bVar30) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar20 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar6 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    } while (bVar30);\n    if ((!bVar33 && !bVar30) == bVar33) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf((BIO *)bio_err,pcVar20,pbVar21);\n  goto LAB_0002e2c6;\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "BIO *pBVar4;" type_identifier (pointer_declarator "*pBVar4" * identifier) ;) (declaration "CONF *conf;" type_identifier (pointer_declarator "*conf" * identifier) ;) (declaration "X509_NAME *pXVar5;" type_identifier (pointer_declarator "*pXVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "X509_NAME_ENTRY *pXVar7;" type_identifier (pointer_declarator "*pXVar7" * identifier) ;) (declaration "ASN1_STRING *pAVar8;" type_identifier (pointer_declarator "*pAVar8" * identifier) ;) (declaration "ASN1_OBJECT *o;" type_identifier (pointer_declarator "*o" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "X509 *pXVar11;" type_identifier (pointer_declarator "*pXVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "EVP_PKEY *pEVar13;" type_identifier (pointer_declarator "*pEVar13" * identifier) ;) (declaration "OPENSSL_STRING *ppcVar14;" type_identifier (pointer_declarator "*ppcVar14" * identifier) ;) (declaration "ASN1_TIME *a;" type_identifier (pointer_declarator "*a" * identifier) ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int loc;" primitive_type identifier ;) (declaration "uchar *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "X509 *pXVar19;" type_identifier (pointer_declarator "*pXVar19" * identifier) ;) (declaration "OPENSSL_STRING *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "char *pcVar20;" primitive_type (pointer_declarator "*pcVar20" * identifier) ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_00;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_01;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_02;" type_identifier identifier ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "undefined4 extraout_EDX_03;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_04;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_05;" type_identifier identifier ;) (declaration "uchar *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "X509V3_CTX *ctx;" type_identifier (pointer_declarator "*ctx" * identifier) ;) (declaration "ASN1_INTEGER *pAVar25;" type_identifier (pointer_declarator "*pAVar25" * identifier) ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "OPENSSL_STRING *ppcVar27;" type_identifier (pointer_declarator "*ppcVar27" * identifier) ;) (declaration "OPENSSL_STRING *ppcVar28;" type_identifier (pointer_declarator "*ppcVar28" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 uVar29;" type_identifier identifier ;) (declaration "bool bVar30;" primitive_type identifier ;) (declaration "bool bVar31;" primitive_type identifier ;) (declaration "undefined1 uVar32;" type_identifier identifier ;) (declaration "bool bVar33;" primitive_type identifier ;) (declaration "byte bVar34;" type_identifier identifier ;) (declaration "OPENSSL_STRING pcVar35;" type_identifier identifier ;) (declaration "undefined4 uVar36;" type_identifier identifier ;) (declaration "OPENSSL_STRING *ppcVar37;" type_identifier (pointer_declarator "*ppcVar37" * identifier) ;) (declaration "X509 *x;" type_identifier (pointer_declarator "*x" * identifier) ;) (declaration "undefined1 auStack_ec [8];" type_identifier (array_declarator "auStack_ec [8]" identifier [ number_literal ]) ;) (declaration "EVP_PKEY *local_e4;" type_identifier (pointer_declarator "*local_e4" * identifier) ;) (declaration "X509 *local_e0;" type_identifier (pointer_declarator "*local_e0" * identifier) ;) (declaration "X509_NAME *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "X509_NAME *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "BIO **local_d4;" type_identifier (pointer_declarator "**local_d4" * (pointer_declarator "*local_d4" * identifier)) ;) (declaration "char *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "stack_st_CONF_VALUE *local_cc;" type_identifier (pointer_declarator "*local_cc" * identifier) ;) (declaration "ASN1_STRING *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "ASN1_STRING *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "byte *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "byte *local_bc;" type_identifier (pointer_declarator "*local_bc" * identifier) ;) (declaration "X509_NAME *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "X509V3_CTX *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "X509 **local_b0;" type_identifier (pointer_declarator "**local_b0" * (pointer_declarator "*local_b0" * identifier)) ;) (declaration "X509 *local_ac;" type_identifier (pointer_declarator "*local_ac" * identifier) ;) (declaration "CONF *local_a8;" type_identifier (pointer_declarator "*local_a8" * identifier) ;) (declaration "BIGNUM *local_a4;" type_identifier (pointer_declarator "*local_a4" * identifier) ;) (declaration "BIGNUM *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "EVP_PKEY *local_9c;" type_identifier (pointer_declarator "*local_9c" * identifier) ;) (declaration "char *local_98;" primitive_type (pointer_declarator "*local_98" * identifier) ;) (declaration "EVP_MD *local_94;" type_identifier (pointer_declarator "*local_94" * identifier) ;) (declaration "stack_st_OPENSSL_STRING *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "CA_DB *local_8c;" type_identifier (pointer_declarator "*local_8c" * identifier) ;) (declaration "char *local_88;" primitive_type (pointer_declarator "*local_88" * identifier) ;) (declaration "CONF *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "int tdays;" primitive_type identifier ;) (declaration "OPENSSL_STRING row [6];" type_identifier (array_declarator "row [6]" identifier [ number_literal ]) ;) (declaration "undefined1 local_3c [3];" type_identifier (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (declaration "char buf [25];" primitive_type (array_declarator "buf [25]" identifier [ number_literal ]) ;) (expression_statement "bVar34 = 0;" (assignment_expression "bVar34 = 0" identifier = number_literal) ;) (expression_statement "local_94 = dgst;" (assignment_expression "local_94 = dgst" identifier = identifier) ;) (expression_statement "local_90 = sigopts;" (assignment_expression "local_90 = sigopts" identifier = identifier) ;) (expression_statement "local_88 = enddate;" (assignment_expression "local_88 = enddate" identifier = identifier) ;) (expression_statement "local_cc = policy;" (assignment_expression "local_cc = policy" identifier = identifier) ;) (expression_statement "local_98 = (char *)days;" (assignment_expression "local_98 = (char *)days" identifier = (cast_expression "(char *)days" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_8c = db;" (assignment_expression "local_8c = db" identifier = identifier) ;) (expression_statement "local_b4 = (X509V3_CTX *)ext_sect;" (assignment_expression "local_b4 = (X509V3_CTX *)ext_sect" identifier = (cast_expression "(X509V3_CTX *)ext_sect" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_a4 = serial;" (assignment_expression "local_a4 = serial" identifier = identifier) ;) (expression_statement "local_a8 = lconf;" (assignment_expression "local_a8 = lconf" identifier = identifier) ;) (expression_statement "local_a0 = (BIGNUM *)subj;" (assignment_expression "local_a0 = (BIGNUM *)subj" identifier = (cast_expression "(BIGNUM *)subj" ( (type_descriptor "BIGNUM *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_84 = (CONF *)certopt;" (assignment_expression "local_84 = (CONF *)certopt" identifier = (cast_expression "(CONF *)certopt" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "row[0] = (OPENSSL_STRING)0x0;" (assignment_expression "row[0] = (OPENSSL_STRING)0x0" (subscript_expression "row[0]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ;) (expression_statement "row[1] = (OPENSSL_STRING)0x0;" (assignment_expression "row[1] = (OPENSSL_STRING)0x0" (subscript_expression "row[1]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ;) (expression_statement "row[2] = (OPENSSL_STRING)0x0;" (assignment_expression "row[2] = (OPENSSL_STRING)0x0" (subscript_expression "row[2]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ;) (expression_statement "row[3] = (OPENSSL_STRING)0x0;" (assignment_expression "row[3] = (OPENSSL_STRING)0x0" (subscript_expression "row[3]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ;) (expression_statement "row[4] = (OPENSSL_STRING)0x0;" (assignment_expression "row[4] = (OPENSSL_STRING)0x0" (subscript_expression "row[4]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ;) (expression_statement "row[5] = (OPENSSL_STRING)0x0;" (assignment_expression "row[5] = (OPENSSL_STRING)0x0" (subscript_expression "row[5]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ;) (expression_statement "local_b0 = xret;" (assignment_expression "local_b0 = xret" identifier = identifier) ;) (expression_statement "local_ac = (X509 *)x509;" (assignment_expression "local_ac = (X509 *)x509" identifier = (cast_expression "(X509 *)x509" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_9c = (EVP_PKEY *)pkey;" (assignment_expression "local_9c = (EVP_PKEY *)pkey" identifier = (cast_expression "(EVP_PKEY *)pkey" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (chtype == 0) {\nLAB_0002dcb3:\n    if (ext_copy != 0) {\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&bio_err;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6) {\n      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);\n      o = X509_NAME_ENTRY_get_object(pXVar7);\n      iVar6 = OBJ_obj2nid(o);\n      if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);\n    if (pXVar5 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors((BIO *)bio_err);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" if (parenthesized_expression "(chtype == 0)" ( (binary_expression "chtype == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002dcb3:\n    if (ext_copy != 0) {\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&bio_err;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6) {\n      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);\n      o = X509_NAME_ENTRY_get_object(pXVar7);\n      iVar6 = OBJ_obj2nid(o);\n      if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }" { (labeled_statement "LAB_0002dcb3:\n    if (ext_copy != 0) {\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }" statement_identifier : (if_statement "if (ext_copy != 0) {\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }" if (parenthesized_expression "(ext_copy != 0)" ( (binary_expression "ext_copy != 0" identifier != number_literal) )) (compound_statement "{\n      BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");\n    }" { (expression_statement "BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n");" (call_expression "BIO_printf((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n")" identifier (argument_list "((BIO *)bio_err,"The Subject\'s Distinguished Name is as follows\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""The Subject\'s Distinguished Name is as follows\n"" " string_content escape_sequence string_content escape_sequence ") ))) ;) }))) (expression_statement "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);" (assignment_expression "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4)" identifier = (cast_expression "(X509_NAME *)X509_REQ_get_subject_name(local_b4)" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_REQ_get_subject_name(local_b4)" identifier (argument_list "(local_b4)" ( identifier ))))) ;) (expression_statement "local_d8 = (X509_NAME *)&bio_err;" (assignment_expression "local_d8 = (X509_NAME *)&bio_err" identifier = (cast_expression "(X509_NAME *)&bio_err" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&bio_err" & identifier))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6) {\n      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);\n      o = X509_NAME_ENTRY_get_object(pXVar7);\n      iVar6 = OBJ_obj2nid(o);\n      if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" while (parenthesized_expression "(iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6)" ( (comma_expression "iVar6 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar6" (assignment_expression "iVar6 = X509_NAME_entry_count(local_dc)" identifier = (call_expression "X509_NAME_entry_count(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) , (binary_expression "(int)local_e4 < iVar6" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) )) (compound_statement "{\n      pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);\n      o = X509_NAME_ENTRY_get_object(pXVar7);\n      iVar6 = OBJ_obj2nid(o);\n      if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" { (expression_statement "pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4);" (assignment_expression "pXVar7 = X509_NAME_get_entry(local_dc,(int)local_e4)" identifier = (call_expression "X509_NAME_get_entry(local_dc,(int)local_e4)" identifier (argument_list "(local_dc,(int)local_e4)" ( identifier , (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pAVar8 = X509_NAME_ENTRY_get_data(pXVar7);" (assignment_expression "pAVar8 = X509_NAME_ENTRY_get_data(pXVar7)" identifier = (call_expression "X509_NAME_ENTRY_get_data(pXVar7)" identifier (argument_list "(pXVar7)" ( identifier )))) ;) (expression_statement "o = X509_NAME_ENTRY_get_object(pXVar7);" (assignment_expression "o = X509_NAME_ENTRY_get_object(pXVar7)" identifier = (call_expression "X509_NAME_ENTRY_get_object(pXVar7)" identifier (argument_list "(pXVar7)" ( identifier )))) ;) (expression_statement "iVar6 = OBJ_obj2nid(o);" (assignment_expression "iVar6 = OBJ_obj2nid(o)" identifier = (call_expression "OBJ_obj2nid(o)" identifier (argument_list "(o)" ( identifier )))) ;) (if_statement "if (msie_hack != 0) {\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" if (parenthesized_expression "(msie_hack != 0)" ( (binary_expression "msie_hack != 0" identifier != number_literal) )) (compound_statement "{\n        iVar17 = pAVar8->type;\n        if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }\n        if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);\n        if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" { (expression_statement "iVar17 = pAVar8->type;" (assignment_expression "iVar17 = pAVar8->type" identifier = (field_expression "pAVar8->type" identifier -> field_identifier)) ;) (if_statement "if (iVar17 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }" if (parenthesized_expression "(iVar17 == 0x1c)" ( (binary_expression "iVar17 == 0x1c" identifier == number_literal) )) (compound_statement "{\n          ASN1_UNIVERSALSTRING_to_string(pAVar8);\n          iVar17 = pAVar8->type;\n        }" { (expression_statement "ASN1_UNIVERSALSTRING_to_string(pAVar8);" (call_expression "ASN1_UNIVERSALSTRING_to_string(pAVar8)" identifier (argument_list "(pAVar8)" ( identifier ))) ;) (expression_statement "iVar17 = pAVar8->type;" (assignment_expression "iVar17 = pAVar8->type" identifier = (field_expression "pAVar8->type" identifier -> field_identifier)) ;) })) (if_statement "if (iVar17 == 0x16) {\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }\n        else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }" if (parenthesized_expression "(iVar17 == 0x16)" ( (binary_expression "iVar17 == 0x16" identifier == number_literal) )) (compound_statement "{\n          if (iVar6 == 0x30) goto LAB_0002dfb4;\n          pAVar8->type = 0x14;\n        }" { (if_statement "if (iVar6 == 0x30) goto LAB_0002dfb4;" if (parenthesized_expression "(iVar6 == 0x30)" ( (binary_expression "iVar6 == 0x30" identifier == number_literal) )) (goto_statement "goto LAB_0002dfb4;" goto statement_identifier ;)) (expression_statement "pAVar8->type = 0x14;" (assignment_expression "pAVar8->type = 0x14" (field_expression "pAVar8->type" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }" else (compound_statement "{\n          if (iVar6 != 0x30) goto LAB_0002dd0e;\n          if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;\n          if (pAVar8->type != 0x16) goto LAB_0002dfcf;\n        }" { (if_statement "if (iVar6 != 0x30) goto LAB_0002dd0e;" if (parenthesized_expression "(iVar6 != 0x30)" ( (binary_expression "iVar6 != 0x30" identifier != number_literal) )) (goto_statement "goto LAB_0002dd0e;" goto statement_identifier ;)) (if_statement "if (iVar17 == 0x13) {\n            pAVar8->type = 0x16;\n          }" if (parenthesized_expression "(iVar17 == 0x13)" ( (binary_expression "iVar17 == 0x13" identifier == number_literal) )) (compound_statement "{\n            pAVar8->type = 0x16;\n          }" { (expression_statement "pAVar8->type = 0x16;" (assignment_expression "pAVar8->type = 0x16" (field_expression "pAVar8->type" identifier -> field_identifier) = number_literal) ;) })) (labeled_statement "LAB_0002dfb4:\n          if (startdate == (char *)0x0) goto LAB_0002dd2b;" statement_identifier : (if_statement "if (startdate == (char *)0x0) goto LAB_0002dd2b;" if (parenthesized_expression "(startdate == (char *)0x0)" ( (binary_expression "startdate == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002dd2b;" goto statement_identifier ;))) (if_statement "if (pAVar8->type != 0x16) goto LAB_0002dfcf;" if (parenthesized_expression "(pAVar8->type != 0x16)" ( (binary_expression "pAVar8->type != 0x16" (field_expression "pAVar8->type" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_0002dfcf;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0002ddaf:\n        iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);" statement_identifier : (expression_statement "iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length);" (assignment_expression "iVar6 = ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length)" identifier = (call_expression "ASN1_PRINTABLE_type(pAVar8->data,pAVar8->length)" identifier (argument_list "(pAVar8->data,pAVar8->length)" ( (field_expression "pAVar8->data" identifier -> field_identifier) , (field_expression "pAVar8->length" identifier -> field_identifier) )))) ;)) (if_statement "if (iVar6 == 0x14) {\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" if (parenthesized_expression "(iVar6 == 0x14)" ( (binary_expression "iVar6 == 0x14" identifier == number_literal) )) (compound_statement "{\n          if (pAVar8->type == 0x14) goto LAB_0002dd1c;\n        }" { (if_statement "if (pAVar8->type == 0x14) goto LAB_0002dd1c;" if (parenthesized_expression "(pAVar8->type == 0x14)" ( (binary_expression "pAVar8->type == 0x14" (field_expression "pAVar8->type" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_0002dd1c;" goto statement_identifier ;)) }) (else_clause "else if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" else (if_statement "if ((iVar6 != 0x16) || (pAVar8->type != 0x13)) {\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" if (parenthesized_expression "((iVar6 != 0x16) || (pAVar8->type != 0x13))" ( (binary_expression "(iVar6 != 0x16) || (pAVar8->type != 0x13)" (parenthesized_expression "(iVar6 != 0x16)" ( (binary_expression "iVar6 != 0x16" identifier != number_literal) )) || (parenthesized_expression "(pAVar8->type != 0x13)" ( (binary_expression "pAVar8->type != 0x13" (field_expression "pAVar8->type" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\nLAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" { (labeled_statement "LAB_0002dd1c:\n          if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" statement_identifier : (if_statement "if (ext_copy != 0) {\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" if (parenthesized_expression "(ext_copy != 0)" ( (binary_expression "ext_copy != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar20 = buf;\n            if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }\n            pcVar20[0] = ':';\n            pcVar20[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,buf);\n            iVar6 = pAVar8->type;\n            if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }\n            local_d4 = (BIO **)&DAT_0007e595;\n            puVar22 = pAVar8->data;\n            local_d0 = "\\0x%02X";\n            puVar18 = puVar22 + pAVar8->length;\n            if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" { (expression_statement "iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);" (assignment_expression "iVar6 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" identifier = (call_expression "i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" identifier (argument_list "(*(BIO **)local_d8,o)" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier )))) ;) (expression_statement "pcVar20 = buf;" (assignment_expression "pcVar20 = buf" identifier = identifier) ;) (if_statement "if (0 < 0x16 - iVar6) {\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }" if (parenthesized_expression "(0 < 0x16 - iVar6)" ( (binary_expression "0 < 0x16 - iVar6" number_literal < (binary_expression "0x16 - iVar6" number_literal - identifier)) )) (compound_statement "{\n              pcVar20 = buf + (0x16 - iVar6);\n              pcVar15 = buf;\n              do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);\n            }" { (expression_statement "pcVar20 = buf + (0x16 - iVar6);" (assignment_expression "pcVar20 = buf + (0x16 - iVar6)" identifier = (binary_expression "buf + (0x16 - iVar6)" identifier + (parenthesized_expression "(0x16 - iVar6)" ( (binary_expression "0x16 - iVar6" number_literal - identifier) )))) ;) (expression_statement "pcVar15 = buf;" (assignment_expression "pcVar15 = buf" identifier = identifier) ;) (do_statement "do {\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              } while (pcVar20 != pcVar9);" do (compound_statement "{\n                pcVar9 = pcVar15 + 1;\n                *pcVar15 = ' ';\n                pcVar15 = pcVar9;\n              }" { (expression_statement "pcVar9 = pcVar15 + 1;" (assignment_expression "pcVar9 = pcVar15 + 1" identifier = (binary_expression "pcVar15 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar15 = ' ';" (assignment_expression "*pcVar15 = ' '" (pointer_expression "*pcVar15" * identifier) = (char_literal "' '" ' character ')) ;) (expression_statement "pcVar15 = pcVar9;" (assignment_expression "pcVar15 = pcVar9" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar20 != pcVar9)" ( (binary_expression "pcVar20 != pcVar9" identifier != identifier) )) ;) })) (expression_statement "pcVar20[0] = ':';" (assignment_expression "pcVar20[0] = ':'" (subscript_expression "pcVar20[0]" identifier [ number_literal ]) = (char_literal "':'" ' character ')) ;) (expression_statement "pcVar20[1] = '\0';" (assignment_expression "pcVar20[1] = '\0'" (subscript_expression "pcVar20[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "BIO_puts(*(BIO **)local_d8,buf);" (call_expression "BIO_puts(*(BIO **)local_d8,buf)" identifier (argument_list "(*(BIO **)local_d8,buf)" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier ))) ;) (expression_statement "iVar6 = pAVar8->type;" (assignment_expression "iVar6 = pAVar8->type" identifier = (field_expression "pAVar8->type" identifier -> field_identifier)) ;) (if_statement "if (iVar6 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }" if (parenthesized_expression "(iVar6 == 0x13)" ( (binary_expression "iVar6 == 0x13" identifier == number_literal) )) (compound_statement "{\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }" { (expression_statement "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");" (call_expression "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'")" identifier (argument_list "(*(BIO **)local_d8,"PRINTABLE:\'")" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""PRINTABLE:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }" else (compound_statement "{\n              pBVar4 = *(BIO **)local_d8;\n              if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }\n            }" { (expression_statement "pBVar4 = *(BIO **)local_d8;" (assignment_expression "pBVar4 = *(BIO **)local_d8" identifier = (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (iVar6 == 0x14) {\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }\n              else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }" if (parenthesized_expression "(iVar6 == 0x14)" ( (binary_expression "iVar6 == 0x14" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar4,"T61STRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar4,"T61STRING:\'");" (call_expression "BIO_printf(pBVar4,"T61STRING:\'")" identifier (argument_list "(pBVar4,"T61STRING:\'")" ( identifier , (string_literal ""T61STRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }" else (if_statement "if (iVar6 == 0x16) {\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }\n              else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }" if (parenthesized_expression "(iVar6 == 0x16)" ( (binary_expression "iVar6 == 0x16" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar4,"IA5STRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar4,"IA5STRING:\'");" (call_expression "BIO_printf(pBVar4,"IA5STRING:\'")" identifier (argument_list "(pBVar4,"IA5STRING:\'")" ( identifier , (string_literal ""IA5STRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }" else (if_statement "if (iVar6 == 0x1c) {\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }" if (parenthesized_expression "(iVar6 == 0x1c)" ( (binary_expression "iVar6 == 0x1c" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar4,"UNIVERSALSTRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar4,"UNIVERSALSTRING:\'");" (call_expression "BIO_printf(pBVar4,"UNIVERSALSTRING:\'")" identifier (argument_list "(pBVar4,"UNIVERSALSTRING:\'")" ( identifier , (string_literal ""UNIVERSALSTRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }" else (compound_statement "{\n                BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);\n              }" { (expression_statement "BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6);" (call_expression "BIO_printf(pBVar4,"ASN.1 %2d:\'",iVar6)" identifier (argument_list "(pBVar4,"ASN.1 %2d:\'",iVar6)" ( identifier , (string_literal ""ASN.1 %2d:\'"" " string_content escape_sequence ") , identifier ))) ;) }))))))) }))) (expression_statement "local_d4 = (BIO **)&DAT_0007e595;" (assignment_expression "local_d4 = (BIO **)&DAT_0007e595" identifier = (cast_expression "(BIO **)&DAT_0007e595" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0007e595" & identifier))) ;) (expression_statement "puVar22 = pAVar8->data;" (assignment_expression "puVar22 = pAVar8->data" identifier = (field_expression "pAVar8->data" identifier -> field_identifier)) ;) (expression_statement "local_d0 = "\\0x%02X";" (assignment_expression "local_d0 = "\\0x%02X"" identifier = (string_literal ""\\0x%02X"" " escape_sequence string_content ")) ;) (expression_statement "puVar18 = puVar22 + pAVar8->length;" (assignment_expression "puVar18 = puVar22 + pAVar8->length" identifier = (binary_expression "puVar22 + pAVar8->length" identifier + (field_expression "pAVar8->length" identifier -> field_identifier))) ;) (if_statement "if (0 < pAVar8->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }" if (parenthesized_expression "(0 < pAVar8->length)" ( (binary_expression "0 < pAVar8->length" number_literal < (field_expression "pAVar8->length" identifier -> field_identifier)) )) (compound_statement "{\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);\n            }" { (do_statement "do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar18);" do (compound_statement "{\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              }" { (while_statement "while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar4 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar4,"%c",local_e0);\n                  if (puVar22 == puVar18) goto LAB_0002df49;\n                }" { (expression_statement "uVar1 = *puVar22;" (assignment_expression "uVar1 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "local_e0 = (X509 *)(int)(char)uVar1;" (assignment_expression "local_e0 = (X509 *)(int)(char)uVar1" identifier = (cast_expression "(X509 *)(int)(char)uVar1" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)uVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (expression_statement "pBVar4 = *(BIO **)local_d8;" (assignment_expression "pBVar4 = *(BIO **)local_d8" identifier = (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (0x5e < (byte)(uVar1 - 0x20)) break;" if (parenthesized_expression "(0x5e < (byte)(uVar1 - 0x20))" ( (binary_expression "0x5e < (byte)(uVar1 - 0x20)" number_literal < (call_expression "(byte)(uVar1 - 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar1 - 0x20)" ( (binary_expression "uVar1 - 0x20" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "BIO_printf(pBVar4,"%c",local_e0);" (call_expression "BIO_printf(pBVar4,"%c",local_e0)" identifier (argument_list "(pBVar4,"%c",local_e0)" ( identifier , (string_literal ""%c"" " string_content ") , identifier ))) ;) (if_statement "if (puVar22 == puVar18) goto LAB_0002df49;" if (parenthesized_expression "(puVar22 == puVar18)" ( (binary_expression "puVar22 == puVar18" identifier == identifier) )) (goto_statement "goto LAB_0002df49;" goto statement_identifier ;)) })) (if_statement "if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" if (parenthesized_expression "((char)uVar1 < '\0')" ( (binary_expression "(char)uVar1 < '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  BIO_printf(pBVar4,local_d0,local_e0);\n                }" { (expression_statement "BIO_printf(pBVar4,local_d0,local_e0);" (call_expression "BIO_printf(pBVar4,local_d0,local_e0)" identifier (argument_list "(pBVar4,local_d0,local_e0)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" else (compound_statement "{\n                  BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" { (expression_statement "BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));" (call_expression "BIO_printf(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" identifier (argument_list "(pBVar4,(char *)local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" ( identifier , (cast_expression "(char *)local_d4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_NAME_ENTRY *)((int)local_e0 + 0x40)" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e0 + 0x40)" ( (binary_expression "(int)local_e0 + 0x40" (cast_expression "(int)local_e0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))) ;) }))) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar22 != puVar18)" ( (binary_expression "puVar22 != puVar18" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");" statement_identifier : (expression_statement "BIO_printf(*(BIO **)local_d8,"\'\n");" (call_expression "BIO_printf(*(BIO **)local_d8,"\'\n")" identifier (argument_list "(*(BIO **)local_d8,"\'\n")" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""\'\n"" " escape_sequence escape_sequence ") ))) ;)) }))) (goto_statement "goto LAB_0002dd2b;" goto statement_identifier ;) })))) (expression_statement "pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";" (assignment_expression "pcVar20 = "\nThe string contains characters that are illegal for the ASN.1 type\n"" identifier = (string_literal ""\nThe string contains characters that are illegal for the ASN.1 type\n"" " escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_0002dde4:\n        BIO_printf((BIO *)bio_err,pcVar20);" statement_identifier : (expression_statement "BIO_printf((BIO *)bio_err,pcVar20);" (call_expression "BIO_printf((BIO *)bio_err,pcVar20)" identifier (argument_list "((BIO *)bio_err,pcVar20)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002de05;" goto statement_identifier ;) })) (if_statement "if ((iVar6 != 0x30) || (startdate != (char *)0x0)) {\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" if (parenthesized_expression "((iVar6 != 0x30) || (startdate != (char *)0x0))" ( (binary_expression "(iVar6 != 0x30) || (startdate != (char *)0x0)" (parenthesized_expression "(iVar6 != 0x30)" ( (binary_expression "iVar6 != 0x30" identifier != number_literal) )) || (parenthesized_expression "(startdate != (char *)0x0)" ( (binary_expression "startdate != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        iVar17 = pAVar8->type;\n        if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar17 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" { (expression_statement "iVar17 = pAVar8->type;" (assignment_expression "iVar17 = pAVar8->type" identifier = (field_expression "pAVar8->type" identifier -> field_identifier)) ;) (if_statement "if (iVar6 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" if (parenthesized_expression "(iVar6 != 0x30)" ( (binary_expression "iVar6 != 0x30" identifier != number_literal) )) (compound_statement "{\nLAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" { (labeled_statement "LAB_0002dd0e:\n          if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;" statement_identifier : (if_statement "if ((iVar17 != 0x1e) && (iVar17 != 0xc)) goto LAB_0002ddaf;" if (parenthesized_expression "((iVar17 != 0x1e) && (iVar17 != 0xc))" ( (binary_expression "(iVar17 != 0x1e) && (iVar17 != 0xc)" (parenthesized_expression "(iVar17 != 0x1e)" ( (binary_expression "iVar17 != 0x1e" identifier != number_literal) )) && (parenthesized_expression "(iVar17 != 0xc)" ( (binary_expression "iVar17 != 0xc" identifier != number_literal) ))) )) (goto_statement "goto LAB_0002ddaf;" goto statement_identifier ;))) (goto_statement "goto LAB_0002dd1c;" goto statement_identifier ;) })) (if_statement "if (iVar17 == 0x16) goto LAB_0002ddaf;" if (parenthesized_expression "(iVar17 == 0x16)" ( (binary_expression "iVar17 == 0x16" identifier == number_literal) )) (goto_statement "goto LAB_0002ddaf;" goto statement_identifier ;)) (labeled_statement "LAB_0002dfcf:\n        pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";" statement_identifier : (expression_statement "pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n";" (assignment_expression "pcVar20 = "\nemailAddress type needs to be of type IA5STRING\n"" identifier = (string_literal ""\nemailAddress type needs to be of type IA5STRING\n"" " escape_sequence string_content escape_sequence ")) ;)) (goto_statement "goto LAB_0002dde4;" goto statement_identifier ;) })) (labeled_statement "LAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" statement_identifier : (expression_statement "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" (assignment_expression "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1)" identifier = (cast_expression "(EVP_PKEY *)((int)&local_e4->type + 1)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_e4->type + 1)" ( (binary_expression "(int)&local_e4->type + 1" (cast_expression "(int)&local_e4->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_e4->type" & (field_expression "local_e4->type" identifier -> field_identifier))) + number_literal) )))) ;)) })) (expression_statement "local_b8 = X509_NAME_new();" (assignment_expression "local_b8 = X509_NAME_new()" identifier = (call_expression "X509_NAME_new()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" if (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" ( (binary_expression "local_b8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      BIO_printf((BIO *)bio_err,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }" { (expression_statement "BIO_printf((BIO *)bio_err,"Memory allocation failure\n");" (call_expression "BIO_printf((BIO *)bio_err,"Memory allocation failure\n")" identifier (argument_list "((BIO *)bio_err,"Memory allocation failure\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") ))) ;) (labeled_statement "LAB_0002de05:\n      local_e0 = (X509 *)0x0;" statement_identifier : (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" else (compound_statement "{\n      if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" { (if_statement "if (db_1 == (CA_DB *)0x0) {\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" if (parenthesized_expression "(db_1 == (CA_DB *)0x0)" ( (binary_expression "db_1 == (CA_DB *)0x0" identifier == (cast_expression "(CA_DB *)0x0" ( (type_descriptor "CA_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pXVar5 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar5);\n      }" { (expression_statement "pXVar5 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar5 = X509_get_subject_name(local_ac)" identifier = (call_expression "X509_get_subject_name(local_ac)" identifier (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "local_d8 = X509_NAME_dup(pXVar5);" (assignment_expression "local_d8 = X509_NAME_dup(pXVar5)" identifier = (call_expression "X509_NAME_dup(pXVar5)" identifier (argument_list "(pXVar5)" ( identifier )))) ;) }) (else_clause "else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" else (compound_statement "{\n        local_d8 = X509_NAME_dup(local_dc);\n      }" { (expression_statement "local_d8 = X509_NAME_dup(local_dc);" (assignment_expression "local_d8 = X509_NAME_dup(local_dc)" identifier = (call_expression "X509_NAME_dup(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) ;) }))) (if_statement "if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" if (parenthesized_expression "(local_d8 == (X509_NAME *)0x0)" ( (binary_expression "local_d8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" { (labeled_statement "LAB_0002e2c6:\n        local_e0 = (X509 *)0x0;" statement_identifier : (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" else (compound_statement "{\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (BIO **)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }\n        if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" { (expression_statement "local_c0 = (byte *)0x7e599;" (assignment_expression "local_c0 = (byte *)0x7e599" identifier = (cast_expression "(byte *)0x7e599" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d4 = (BIO **)0x0;" (assignment_expression "local_d4 = (BIO **)0x0" identifier = (cast_expression "(BIO **)0x0" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "local_c4 = (ASN1_STRING *)0x0;" (assignment_expression "local_c4 = (ASN1_STRING *)0x0" identifier = (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c8 = (ASN1_STRING *)0x0;" (assignment_expression "local_c8 = (ASN1_STRING *)0x0" identifier = (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }" while (parenthesized_expression "(iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6)" ( (comma_expression "iVar6 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar6" (assignment_expression "iVar6 = OPENSSL_sk_num(local_cc)" identifier = (call_expression "OPENSSL_sk_num(local_cc)" identifier (argument_list "(local_cc)" ( identifier )))) , (binary_expression "(int)local_d4 < iVar6" (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) )) (compound_statement "{\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar30 = pbVar24 != (byte *)0xffffffff;\n          bVar33 = pbVar24 == (byte *)0xffffffff;\n          if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = (BIO **)((int)local_d4 + 1);\n        }" { (expression_statement "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);" (assignment_expression "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4)" identifier = (cast_expression "(char *)OPENSSL_sk_value(local_cc,local_d4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "OPENSSL_sk_value(local_cc,local_d4)" identifier (argument_list "(local_cc,local_d4)" ( identifier , identifier ))))) ;) (expression_statement "iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4));" (assignment_expression "iVar6 = OBJ_txt2nid(*(char **)(local_d0 + 4))" identifier = (call_expression "OBJ_txt2nid(*(char **)(local_d0 + 4))" identifier (argument_list "(*(char **)(local_d0 + 4))" ( (pointer_expression "*(char **)(local_d0 + 4)" * (cast_expression "(char **)(local_d0 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar6 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar20 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" { (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar20 = "%s:unknown object type in \'policy\' configuration\n";" (assignment_expression "pcVar20 = "%s:unknown object type in \'policy\' configuration\n"" identifier = (string_literal ""%s:unknown object type in \'policy\' configuration\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) (expression_statement "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6);" (assignment_expression "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar6)" identifier = (cast_expression "(EVP_PKEY *)OBJ_nid2obj(iVar6)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "OBJ_nid2obj(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "local_bc = (byte *)0x7e5a2;" (assignment_expression "local_bc = (byte *)0x7e5a2" identifier = (cast_expression "(byte *)0x7e5a2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar24 = (byte *)0xffffffff;" (assignment_expression "pbVar24 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" statement_identifier : (expression_statement "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" (assignment_expression "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" identifier = (cast_expression "(byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" identifier (argument_list "(local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" ( identifier , (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)pbVar24" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;)) (if_statement "if (-1 < (int)pbVar10) {\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" if (parenthesized_expression "(-1 < (int)pbVar10)" ( (binary_expression "-1 < (int)pbVar10" number_literal < (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar29 = auStack_ec < (undefined1 *)0x8;\n            uVar32 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);\n            bVar30 = false;\n            bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;\n            local_e0 = (X509 *)pXVar7;\n            if (bVar33) goto joined_r0x0002efd1;\n            iVar6 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar6 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" { (expression_statement "uVar29 = auStack_ec < (undefined1 *)0x8;" (assignment_expression "uVar29 = auStack_ec < (undefined1 *)0x8" identifier = (binary_expression "auStack_ec < (undefined1 *)0x8" identifier < (cast_expression "(undefined1 *)0x8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar32 = &stack0x00000000 == (undefined1 *)0xf4;" (assignment_expression "uVar32 = &stack0x00000000 == (undefined1 *)0xf4" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0xf4" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0xf4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10);" (assignment_expression "pXVar7 = X509_NAME_get_entry(local_dc,(int)pbVar10)" identifier = (call_expression "X509_NAME_get_entry(local_dc,(int)pbVar10)" identifier (argument_list "(local_dc,(int)pbVar10)" ( identifier , (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar6 = 9;" (assignment_expression "iVar6 = 9" identifier = number_literal) ;) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" identifier = (pointer_expression "*(byte **)(local_d0 + 8)" * (cast_expression "(byte **)(local_d0 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 8)" ( (binary_expression "local_d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar26 = local_c0;" (assignment_expression "pbVar26 = local_c0" identifier = identifier) ;) (do_statement "do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while ((bool)uVar32);" do (compound_statement "{\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              uVar29 = *pbVar24 < *pbVar26;\n              uVar32 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar29 = *pbVar24 < *pbVar26;" (assignment_expression "uVar29 = *pbVar24 < *pbVar26" identifier = (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "uVar32 = *pbVar24 == *pbVar26;" (assignment_expression "uVar32 = *pbVar24 == *pbVar26" identifier = (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar26 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar32)" ( (cast_expression "(bool)uVar32" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (expression_statement "bVar30 = false;" (assignment_expression "bVar30 = false" identifier = false) ;) (expression_statement "bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;" (assignment_expression "bVar33 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29" identifier = (binary_expression "(!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29" (parenthesized_expression "(!(bool)uVar29 && !(bool)uVar32)" ( (binary_expression "!(bool)uVar29 && !(bool)uVar32" (unary_expression "!(bool)uVar29" ! (cast_expression "(bool)uVar29" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar32" ! (cast_expression "(bool)uVar32" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar29" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "local_e0 = (X509 *)pXVar7;" (assignment_expression "local_e0 = (X509 *)pXVar7" identifier = (cast_expression "(X509 *)pXVar7" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar33) goto joined_r0x0002efd1;" if (parenthesized_expression "(bVar33)" ( identifier )) (goto_statement "goto joined_r0x0002efd1;" goto statement_identifier ;)) (expression_statement "iVar6 = 9;" (assignment_expression "iVar6 = 9" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar26 = local_bc;" (assignment_expression "pbVar26 = local_bc" identifier = identifier) ;) (do_statement "do {\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);" do (compound_statement "{\n              pbVar23 = pbVar24;\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;\n              bVar30 = *pbVar24 < *pbVar26;\n              bVar33 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;\n            }" { (expression_statement "pbVar23 = pbVar24;" (assignment_expression "pbVar23 = pbVar24" identifier = identifier) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar23 = pbVar24 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "bVar30 = *pbVar24 < *pbVar26;" (assignment_expression "bVar30 = *pbVar24 < *pbVar26" identifier = (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "bVar33 = *pbVar24 == *pbVar26;" (assignment_expression "bVar33 = *pbVar24 == *pbVar26" identifier = (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "pbVar24 = pbVar23;" (assignment_expression "pbVar24 = pbVar23" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar26 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar33)" ( identifier )) ;) (if_statement "if ((!bVar30 && !bVar33) == bVar30) {\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" if (parenthesized_expression "((!bVar30 && !bVar33) == bVar30)" ( (binary_expression "(!bVar30 && !bVar33) == bVar30" (parenthesized_expression "(!bVar30 && !bVar33)" ( (binary_expression "!bVar30 && !bVar33" (unary_expression "!bVar30" ! identifier) && (unary_expression "!bVar33" ! identifier)) )) == identifier) )) (compound_statement "{\n              if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" { (if_statement "if (pXVar7 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;" if (parenthesized_expression "(pXVar7 != (X509_NAME_ENTRY *)0x0)" ( (binary_expression "pXVar7 != (X509_NAME_ENTRY *)0x0" identifier != (cast_expression "(X509_NAME_ENTRY *)0x0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e1ad;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e236;" goto statement_identifier ;) })) (expression_statement "local_80 = pbVar21;" (assignment_expression "local_80 = pbVar21" identifier = identifier) ;) (expression_statement "iVar6 = strcmp((char *)pbVar21,"match");" (assignment_expression "iVar6 = strcmp((char *)pbVar21,"match")" identifier = (call_expression "strcmp((char *)pbVar21,"match")" identifier (argument_list "((char *)pbVar21,"match")" ( (cast_expression "(char *)pbVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""match"" " string_content ") )))) ;) (expression_statement "pbVar21 = local_80;" (assignment_expression "pbVar21 = local_80" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" { (if_statement "if (local_e0 != (X509 *)0x0) {\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }" if (parenthesized_expression "(local_e0 != (X509 *)0x0)" ( (binary_expression "local_e0 != (X509 *)0x0" identifier != (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar6 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);\n                goto joined_r0x0002efd1;\n              }" { (expression_statement "iVar6 = -1;" (assignment_expression "iVar6 = -1" identifier = number_literal) ;) (expression_statement "local_80 = pbVar10;" (assignment_expression "local_80 = pbVar10" identifier = identifier) ;) (do_statement "do {\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                } while (iVar17 != 0);" do (compound_statement "{\n                  pEVar13 = local_e4;\n                  iVar17 = iVar6;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);\n                  if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar7 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar8;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar7);\n                  iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);\n                  iVar6 = loc;\n                  pbVar10 = local_80;\n                }" { (expression_statement "pEVar13 = local_e4;" (assignment_expression "pEVar13 = local_e4" identifier = identifier) ;) (expression_statement "iVar17 = iVar6;" (assignment_expression "iVar17 = iVar6" identifier = identifier) ;) (expression_statement "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6);" (assignment_expression "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6)" identifier = (call_expression "X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar6)" identifier (argument_list "(local_d8,(ASN1_OBJECT *)local_e4,iVar6)" ( identifier , (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if ((loc < 0) && (iVar6 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" if (parenthesized_expression "((loc < 0) && (iVar6 == -1))" ( (binary_expression "(loc < 0) && (iVar6 == -1)" (parenthesized_expression "(loc < 0)" ( (binary_expression "loc < 0" identifier < number_literal) )) && (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) ))) )) (compound_statement "{\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" { (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;" (assignment_expression "pcVar20 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" identifier = (string_literal ""The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) (if_statement "if (loc < 0) {\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" if (parenthesized_expression "(loc < 0)" ( (binary_expression "loc < 0" identifier < number_literal) )) (compound_statement "{\n                    puVar18 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" { (expression_statement "puVar18 = "NULL";" (assignment_expression "puVar18 = "NULL"" identifier = (string_literal ""NULL"" " string_content ")) ;) (if_statement "if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar18 = local_c8->data;\n                    }" if (parenthesized_expression "(local_c8 != (ASN1_STRING *)0x0)" ( (binary_expression "local_c8 != (ASN1_STRING *)0x0" identifier != (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      puVar18 = local_c8->data;\n                    }" { (expression_statement "puVar18 = local_c8->data;" (assignment_expression "puVar18 = local_c8->data" identifier = (field_expression "local_c8->data" identifier -> field_identifier)) ;) })) (expression_statement "puVar22 = "NULL";" (assignment_expression "puVar22 = "NULL"" identifier = (string_literal ""NULL"" " string_content ")) ;) (if_statement "if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }" if (parenthesized_expression "(local_c4 != (ASN1_STRING *)0x0)" ( (binary_expression "local_c4 != (ASN1_STRING *)0x0" identifier != (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      puVar22 = local_c4->data;\n                    }" { (expression_statement "puVar22 = local_c4->data;" (assignment_expression "puVar22 = local_c4->data" identifier = (field_expression "local_c4->data" identifier -> field_identifier)) ;) })) (expression_statement "BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              );" (call_expression "BIO_printf((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              )" identifier (argument_list "((BIO *)bio_err,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar18,pEVar13,iVar17,pbVar23\n                              )" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""The %s field is different between\nCA certificate (%s) and the request (%s)\n"" " string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(local_d0 + 4)" * (cast_expression "(undefined4 *)(local_d0 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;) })) (expression_statement "pXVar7 = X509_NAME_get_entry(local_d8,loc);" (assignment_expression "pXVar7 = X509_NAME_get_entry(local_d8,loc)" identifier = (call_expression "X509_NAME_get_entry(local_d8,loc)" identifier (argument_list "(local_d8,loc)" ( identifier , identifier )))) ;) (expression_statement "pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);" (assignment_expression "pAVar8 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" identifier = (call_expression "X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" identifier (argument_list "((X509_NAME_ENTRY *)local_e0)" ( (cast_expression "(X509_NAME_ENTRY *)local_e0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "local_c8 = pAVar8;" (assignment_expression "local_c8 = pAVar8" identifier = identifier) ;) (expression_statement "local_c4 = X509_NAME_ENTRY_get_data(pXVar7);" (assignment_expression "local_c4 = X509_NAME_ENTRY_get_data(pXVar7)" identifier = (call_expression "X509_NAME_ENTRY_get_data(pXVar7)" identifier (argument_list "(pXVar7)" ( identifier )))) ;) (expression_statement "iVar17 = ASN1_STRING_cmp(pAVar8,local_c4);" (assignment_expression "iVar17 = ASN1_STRING_cmp(pAVar8,local_c4)" identifier = (call_expression "ASN1_STRING_cmp(pAVar8,local_c4)" identifier (argument_list "(pAVar8,local_c4)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = loc;" (assignment_expression "iVar6 = loc" identifier = identifier) ;) (expression_statement "pbVar10 = local_80;" (assignment_expression "pbVar10 = local_80" identifier = identifier) ;) }) while (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) ;) (goto_statement "goto joined_r0x0002efd1;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e2a5;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e921;" goto statement_identifier ;) })) (expression_statement "bVar30 = pbVar24 != (byte *)0xffffffff;" (assignment_expression "bVar30 = pbVar24 != (byte *)0xffffffff" identifier = (binary_expression "pbVar24 != (byte *)0xffffffff" identifier != (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar33 = pbVar24 == (byte *)0xffffffff;" (assignment_expression "bVar33 = pbVar24 == (byte *)0xffffffff" identifier = (binary_expression "pbVar24 == (byte *)0xffffffff" identifier == (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar33) {\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" if (parenthesized_expression "(bVar33)" ( identifier )) (compound_statement "{\n            iVar6 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);\n            bVar31 = false;\n            bVar30 = (!bVar30 && !bVar33) == bVar30;\n            if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" { (expression_statement "iVar6 = 9;" (assignment_expression "iVar6 = 9" identifier = number_literal) ;) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" identifier = (pointer_expression "*(byte **)(local_d0 + 8)" * (cast_expression "(byte **)(local_d0 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 8)" ( (binary_expression "local_d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = local_c0;" (assignment_expression "pbVar10 = local_c0" identifier = identifier) ;) (do_statement "do {\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            } while (bVar33);" do (compound_statement "{\n              if (iVar6 == 0) break;\n              iVar6 = iVar6 + -1;\n              bVar30 = *pbVar24 < *pbVar10;\n              bVar33 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n            }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar30 = *pbVar24 < *pbVar10;" (assignment_expression "bVar30 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar33 = *pbVar24 == *pbVar10;" (assignment_expression "bVar33 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar33)" ( identifier )) ;) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;) (expression_statement "bVar30 = (!bVar30 && !bVar33) == bVar30;" (assignment_expression "bVar30 = (!bVar30 && !bVar33) == bVar30" identifier = (binary_expression "(!bVar30 && !bVar33) == bVar30" (parenthesized_expression "(!bVar30 && !bVar33)" ( (binary_expression "!bVar30 && !bVar33" (unary_expression "!bVar30" ! identifier) && (unary_expression "!bVar33" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar30) {\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" if (parenthesized_expression "(!bVar30)" ( (unary_expression "!bVar30" ! identifier) )) (compound_statement "{\n              iVar6 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" { (expression_statement "iVar6 = 9;" (assignment_expression "iVar6 = 9" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"supplied";" (assignment_expression "pbVar10 = (byte *)"supplied"" identifier = (cast_expression "(byte *)"supplied"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""supplied"" " string_content "))) ;) (goto_statement "goto code_r0x0002e27e;" goto statement_identifier ;) })) })) (expression_statement "local_d4 = (BIO **)((int)local_d4 + 1);" (assignment_expression "local_d4 = (BIO **)((int)local_d4 + 1)" identifier = (cast_expression "(BIO **)((int)local_d4 + 1)" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_d4 + 1)" ( (binary_expression "(int)local_d4 + 1" (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (if_statement "if (preserve != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" if (parenthesized_expression "(preserve != 0)" ( (binary_expression "preserve != 0" identifier != number_literal) )) (compound_statement "{\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" { (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = X509_NAME_dup(local_dc);" (assignment_expression "local_b8 = X509_NAME_dup(local_dc)" identifier = (call_expression "X509_NAME_dup(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) ;) (if_statement "if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;" if (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" ( (binary_expression "local_b8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;)) })) (if_statement "if (req != (X509_REQ *)0x0) {\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" if (parenthesized_expression "(req != (X509_REQ *)0x0)" ( (binary_expression "req != (X509_REQ *)0x0" identifier != (cast_expression "(X509_REQ *)0x0" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" { (expression_statement "BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n");" (call_expression "BIO_printf((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n")" identifier (argument_list "((BIO *)bio_err,\n                     "Everything appears to be ok, creating and signing the certificate\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Everything appears to be ok, creating and signing the certificate\n"" " string_content escape_sequence ") ))) ;) })) (expression_statement "pXVar11 = X509_new();" (assignment_expression "pXVar11 = X509_new()" identifier = (call_expression "X509_new()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_e0 = pXVar11;" (assignment_expression "local_e0 = pXVar11" identifier = identifier) ;) (if_statement "if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;" if (parenthesized_expression "(pXVar11 == (X509 *)0x0)" ( (binary_expression "pXVar11 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) (expression_statement "pAVar25 = X509_get_serialNumber(pXVar11);" (assignment_expression "pAVar25 = X509_get_serialNumber(pXVar11)" identifier = (call_expression "X509_get_serialNumber(pXVar11)" identifier (argument_list "(pXVar11)" ( identifier )))) ;) (expression_statement "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);" (assignment_expression "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25)" identifier = (call_expression "BN_to_ASN1_INTEGER(local_a0,pAVar25)" identifier (argument_list "(local_a0,pAVar25)" ( identifier , identifier )))) ;) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" if (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" identifier != (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" { (if_statement "if (db_1 == (CA_DB *)0x0) {\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }\n          else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }" if (parenthesized_expression "(db_1 == (CA_DB *)0x0)" ( (binary_expression "db_1 == (CA_DB *)0x0" identifier == (cast_expression "(CA_DB *)0x0" ( (type_descriptor "CA_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pXVar5 = X509_get_subject_name(local_ac);\n            iVar6 = X509_set_issuer_name(local_e0,pXVar5);\n          }" { (expression_statement "pXVar5 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar5 = X509_get_subject_name(local_ac)" identifier = (call_expression "X509_get_subject_name(local_ac)" identifier (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "iVar6 = X509_set_issuer_name(local_e0,pXVar5);" (assignment_expression "iVar6 = X509_set_issuer_name(local_e0,pXVar5)" identifier = (call_expression "X509_set_issuer_name(local_e0,pXVar5)" identifier (argument_list "(local_e0,pXVar5)" ( identifier , identifier )))) ;) }) (else_clause "else {\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }" else (compound_statement "{\n            iVar6 = X509_set_issuer_name(pXVar11,local_b8);\n          }" { (expression_statement "iVar6 = X509_set_issuer_name(pXVar11,local_b8);" (assignment_expression "iVar6 = X509_set_issuer_name(pXVar11,local_b8)" identifier = (call_expression "X509_set_issuer_name(pXVar11,local_b8)" identifier (argument_list "(pXVar11,local_b8)" ( identifier , identifier )))) ;) }))) (if_statement "if ((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)) {\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" if (parenthesized_expression "((iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0))" ( (binary_expression "(iVar6 != 0) &&\n             (pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0)" ( (comma_expression "pXVar11 = (X509 *)batch,\n             iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0" (assignment_expression "pXVar11 = (X509 *)batch" identifier = (cast_expression "(X509 *)batch" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch), iVar6 != 0" (assignment_expression "iVar6 = set_cert_times((X509 *)local_e0,local_88,local_98,batch)" identifier = (call_expression "set_cert_times((X509 *)local_e0,local_88,local_98,batch)" identifier (argument_list "((X509 *)local_e0,local_88,local_98,batch)" ( (cast_expression "(X509 *)local_e0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n            if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar6 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" { (if_statement "if (local_98 != (char *)0x0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }" if (parenthesized_expression "(local_98 != (char *)0x0)" ( (binary_expression "local_98 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);\n              batch = tdays;\n              if (iVar6 == 0) goto LAB_0002e84a;\n            }" { (expression_statement "uVar12 = X509_get0_notAfter(local_e0);" (assignment_expression "uVar12 = X509_get0_notAfter(local_e0)" identifier = (call_expression "X509_get0_notAfter(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;) (expression_statement "iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12);" (assignment_expression "iVar6 = ASN1_TIME_diff(&tdays,0,0,uVar12)" identifier = (call_expression "ASN1_TIME_diff(&tdays,0,0,uVar12)" identifier (argument_list "(&tdays,0,0,uVar12)" ( (pointer_expression "&tdays" & identifier) , number_literal , number_literal , identifier )))) ;) (expression_statement "batch = tdays;" (assignment_expression "batch = tdays" identifier = identifier) ;) (if_statement "if (iVar6 == 0) goto LAB_0002e84a;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) })) (expression_statement "x = local_e0;" (assignment_expression "x = local_e0" identifier = identifier) ;) (expression_statement "iVar6 = X509_set_subject_name(local_e0,local_b8);" (assignment_expression "iVar6 = X509_set_subject_name(local_e0,local_b8)" identifier = (call_expression "X509_set_subject_name(local_e0,local_b8)" identifier (argument_list "(local_e0,local_b8)" ( identifier , identifier )))) ;) (expression_statement "ctx = local_b4;" (assignment_expression "ctx = local_b4" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar6 = X509_set_pubkey(x,pEVar13);\n              if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" { (expression_statement "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);" (assignment_expression "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" identifier = (cast_expression "(EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_REQ_get0_pubkey(local_b4)" identifier (argument_list "(local_b4)" ( identifier ))))) ;) (expression_statement "iVar6 = X509_set_pubkey(x,pEVar13);" (assignment_expression "iVar6 = X509_set_pubkey(x,pEVar13)" identifier = (call_expression "X509_set_pubkey(x,pEVar13)" identifier (argument_list "(x,pEVar13)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 != 0) {\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }\n                iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);\n                if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar6 = X509_get0_extensions(local_e0);\n                if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;\n                if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }\n                if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" { (if_statement "if (local_a8 != (CONF *)0x0) {\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }" if (parenthesized_expression "(local_a8 != (CONF *)0x0)" ( (binary_expression "local_a8 != (CONF *)0x0" identifier != (cast_expression "(CONF *)0x0" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = (X509V3_CTX *)&tdays;\n                  if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }\n                }" { (if_statement "if (db_1 == (CA_DB *)0x0) {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }\n                  else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" if (parenthesized_expression "(db_1 == (CA_DB *)0x0)" ( (binary_expression "db_1 == (CA_DB *)0x0" identifier == (cast_expression "(CA_DB *)0x0" ( (type_descriptor "CA_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);\n                  }" { (expression_statement "X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0);" (call_expression "X509V3_set_ctx((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0)" identifier (argument_list "((X509V3_CTX *)&tdays,local_ac,local_e0,(X509_REQ *)local_b4,\n                                   (X509_CRL *)0x0,0)" ( (cast_expression "(X509V3_CTX *)&tdays" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tdays" & identifier)) , identifier , identifier , (cast_expression "(X509_REQ *)local_b4" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_CRL *)0x0" ( (type_descriptor "X509_CRL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) }) (else_clause "else {\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" else (compound_statement "{\n                    X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" { (expression_statement "X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);" (call_expression "X509V3_set_ctx((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" identifier (argument_list "((X509V3_CTX *)&tdays,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" ( (cast_expression "(X509V3_CTX *)&tdays" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tdays" & identifier)) , identifier , identifier , (cast_expression "(X509_REQ *)ctx" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_CRL *)0x0" ( (type_descriptor "X509_CRL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) }))) (expression_statement "conf = local_84;" (assignment_expression "conf = local_84" identifier = identifier) ;) (expression_statement "ctx = (X509V3_CTX *)&tdays;" (assignment_expression "ctx = (X509V3_CTX *)&tdays" identifier = (cast_expression "(X509V3_CTX *)&tdays" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tdays" & identifier))) ;) (if_statement "if (extconf == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }\n                  else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }" if (parenthesized_expression "(extconf == (CONF *)0x0)" ( (binary_expression "extconf == (CONF *)0x0" identifier == (cast_expression "(CONF *)0x0" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);\n                    if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }\n                  }" { (expression_statement "X509V3_set_nconf(ctx,local_84);" (call_expression "X509V3_set_nconf(ctx,local_84)" identifier (argument_list "(ctx,local_84)" ( identifier , identifier ))) ;) (expression_statement "pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0);" (assignment_expression "pXVar19 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0)" identifier = (cast_expression "(X509 *)X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0)" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509V3_EXT_add_nconf(conf,ctx,(char *)local_a8,local_e0)" identifier (argument_list "(conf,ctx,(char *)local_a8,local_e0)" ( identifier , identifier , (cast_expression "(char *)local_a8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (if_statement "if (pXVar19 == (X509 *)0x0) {\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }" if (parenthesized_expression "(pXVar19 == (X509 *)0x0)" ( (binary_expression "pXVar19 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);\n                      ERR_print_errors((BIO *)bio_err);\n                      goto LAB_0002e84a;\n                    }" { (expression_statement "BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05);" (call_expression "BIO_printf((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05)" identifier (argument_list "((BIO *)bio_err,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_05)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""ERROR: adding extensions in section %s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "ERR_print_errors((BIO *)bio_err);" (call_expression "ERR_print_errors((BIO *)bio_err)" identifier (argument_list "((BIO *)bio_err)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;) })) (expression_statement "pXVar11 = x;" (assignment_expression "pXVar11 = x" identifier = identifier) ;) (if_statement "if (req != (X509_REQ *)0x0) {\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }" if (parenthesized_expression "(req != (X509_REQ *)0x0)" ( (binary_expression "req != (X509_REQ *)0x0" identifier != (cast_expression "(X509_REQ *)0x0" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);\n                      pXVar11 = pXVar19;\n                    }" { (expression_statement "BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19);" (call_expression "BIO_printf((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19)" identifier (argument_list "((BIO *)bio_err,"Successfully added extensions from config\n",\n                                 pXVar19,pXVar19)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Successfully added extensions from config\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pXVar11 = pXVar19;" (assignment_expression "pXVar11 = pXVar19" identifier = identifier) ;) })) }) (else_clause "else if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }" else (if_statement "if (req == (X509_REQ *)0x0) {\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }" if (parenthesized_expression "(req == (X509_REQ *)0x0)" ( (binary_expression "req == (X509_REQ *)0x0" identifier == (cast_expression "(X509_REQ *)0x0" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }" { (expression_statement "X509V3_set_nconf(ctx,(CONF *)extconf);" (call_expression "X509V3_set_nconf(ctx,(CONF *)extconf)" identifier (argument_list "(ctx,(CONF *)extconf)" ( identifier , (cast_expression "(CONF *)extconf" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);" (assignment_expression "iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0)" identifier = (call_expression "X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0)" identifier (argument_list "((CONF *)extconf,ctx,(char *)local_a8,local_e0)" ( (cast_expression "(CONF *)extconf" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(char *)local_a8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      iVar6 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" { (expression_statement "local_e4 = (EVP_PKEY *)&bio_err;" (assignment_expression "local_e4 = (EVP_PKEY *)&bio_err" identifier = (cast_expression "(EVP_PKEY *)&bio_err" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&bio_err" & identifier))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);" statement_identifier : (expression_statement "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6);" (call_expression "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6)" identifier (argument_list "((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar6)" ( (cast_expression "(BIO *)((ASN1_OBJECT *)local_e4)->sn" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((ASN1_OBJECT *)local_e4)->sn" (parenthesized_expression "((ASN1_OBJECT *)local_e4)" ( (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) , (string_literal ""ERROR: adding extensions in section %s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;)) (expression_statement "ERR_print_errors((BIO *)local_e4->type);" (call_expression "ERR_print_errors((BIO *)local_e4->type)" identifier (argument_list "((BIO *)local_e4->type)" ( (cast_expression "(BIO *)local_e4->type" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e4->type" identifier -> field_identifier)) ))) ;) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;) })) }) (else_clause "else {\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }" else (compound_statement "{\n                    local_e4 = (EVP_PKEY *)&bio_err;\n                    BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);\n                    X509V3_set_nconf(ctx,(CONF *)extconf);\n                    iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);\n                    if (iVar6 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);\n                    pXVar11 = (X509 *)db_1;\n                  }" { (expression_statement "local_e4 = (EVP_PKEY *)&bio_err;" (assignment_expression "local_e4 = (EVP_PKEY *)&bio_err" identifier = (cast_expression "(EVP_PKEY *)&bio_err" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&bio_err" & identifier))) ;) (expression_statement "BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf);" (call_expression "BIO_printf((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf)" identifier (argument_list "((BIO *)bio_err,"Extra configuration file found\n",extconf,extconf)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Extra configuration file found\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "X509V3_set_nconf(ctx,(CONF *)extconf);" (call_expression "X509V3_set_nconf(ctx,(CONF *)extconf)" identifier (argument_list "(ctx,(CONF *)extconf)" ( identifier , (cast_expression "(CONF *)extconf" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0);" (assignment_expression "iVar6 = X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0)" identifier = (call_expression "X509V3_EXT_add_nconf((CONF *)extconf,ctx,(char *)local_a8,local_e0)" identifier (argument_list "((CONF *)extconf,ctx,(char *)local_a8,local_e0)" ( (cast_expression "(CONF *)extconf" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(char *)local_a8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if (iVar6 == 0) goto LAB_0002e824;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e824;" goto statement_identifier ;)) (expression_statement "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1);" (call_expression "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1)" identifier (argument_list "((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               db_1,db_1)" ( (cast_expression "(BIO *)local_e4->type" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e4->type" identifier -> field_identifier)) , (string_literal ""Successfully added extensions from file.\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pXVar11 = (X509 *)db_1;" (assignment_expression "pXVar11 = (X509 *)db_1" identifier = (cast_expression "(X509 *)db_1" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))))) })) (expression_statement "iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign);" (assignment_expression "iVar6 = copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign)" identifier = (call_expression "copy_extensions((X509 *)local_e0,(X509_REQ *)local_b4,selfsign)" identifier (argument_list "((X509 *)local_e0,(X509_REQ *)local_b4,selfsign)" ( (cast_expression "(X509 *)local_e0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_REQ *)local_b4" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                  BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);\n                  ERR_print_errors((BIO *)bio_err);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" { (expression_statement "BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11);" (call_expression "BIO_printf((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11)" identifier (argument_list "((BIO *)bio_err,"ERROR: adding extensions from request\n",selfsign,\n                             pXVar11)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""ERROR: adding extensions from request\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "ERR_print_errors((BIO *)bio_err);" (call_expression "ERR_print_errors((BIO *)bio_err)" identifier (argument_list "((BIO *)bio_err)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (labeled_statement "LAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;" statement_identifier : (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (expression_statement "iVar6 = X509_get0_extensions(local_e0);" (assignment_expression "iVar6 = X509_get0_extensions(local_e0)" identifier = (call_expression "X509_get0_extensions(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;) (if_statement "if (((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)) goto LAB_0002e84a;" if (parenthesized_expression "(((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0))" ( (binary_expression "((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)) &&\n                   (iVar6 = X509_set_version(local_e0,2), iVar6 == 0)" (parenthesized_expression "((iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6))" ( (binary_expression "(iVar6 != 0) && (iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6)" ( (comma_expression "iVar6 = OPENSSL_sk_num(iVar6), 0 < iVar6" (assignment_expression "iVar6 = OPENSSL_sk_num(iVar6)" identifier = (call_expression "OPENSSL_sk_num(iVar6)" identifier (argument_list "(iVar6)" ( identifier )))) , (binary_expression "0 < iVar6" number_literal < identifier)) ))) )) && (parenthesized_expression "(iVar6 = X509_set_version(local_e0,2), iVar6 == 0)" ( (comma_expression "iVar6 = X509_set_version(local_e0,2), iVar6 == 0" (assignment_expression "iVar6 = X509_set_version(local_e0,2)" identifier = (call_expression "X509_set_version(local_e0,2)" identifier (argument_list "(local_e0,2)" ( identifier , number_literal )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) (if_statement "if (req != (X509_REQ *)0x0) {\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }" if (parenthesized_expression "(req != (X509_REQ *)0x0)" ( (binary_expression "req != (X509_REQ *)0x0" identifier != (cast_expression "(X509_REQ *)0x0" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);\n                }" { (expression_statement "BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req);" (call_expression "BIO_printf((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req)" identifier (argument_list "((BIO *)bio_err,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             req,req)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""The subject name appears to be ok, checking data base for clashes\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) })) (if_statement "if (startdate == (char *)0x0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" if (parenthesized_expression "(startdate == (char *)0x0)" ( (binary_expression "startdate == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar5 = X509_NAME_dup(local_b8);\n                  if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }" { (expression_statement "ctx = (X509V3_CTX *)0xffffffff;" (assignment_expression "ctx = (X509V3_CTX *)0xffffffff" identifier = (cast_expression "(X509V3_CTX *)0xffffffff" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pXVar5 = X509_NAME_dup(local_b8);" (assignment_expression "pXVar5 = X509_NAME_dup(local_b8)" identifier = (call_expression "X509_NAME_dup(local_b8)" identifier (argument_list "(local_b8)" ( identifier )))) ;) (if_statement "if (pXVar5 != (X509_NAME *)0x0) {\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }" if (parenthesized_expression "(pXVar5 != (X509_NAME *)0x0)" ( (binary_expression "pXVar5 != (X509_NAME *)0x0" identifier != (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }\n                    iVar6 = X509_set_subject_name(local_e0,pXVar5);\n                    if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar5);\n                    goto LAB_0002e636;\n                  }" { (while_statement "while (iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6) {\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }" while (parenthesized_expression "(iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6)" ( (comma_expression "iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx), -1 < iVar6" (assignment_expression "iVar6 = X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx)" identifier = (call_expression "X509_NAME_get_index_by_NID(pXVar5,0x30,(int)ctx)" identifier (argument_list "(pXVar5,0x30,(int)ctx)" ( identifier , number_literal , (cast_expression "(int)ctx" ( (type_descriptor "int" primitive_type) ) identifier) )))) , (binary_expression "-1 < iVar6" number_literal < identifier)) )) (compound_statement "{\n                      ctx = (X509V3_CTX *)(iVar6 + -1);\n                      pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);\n                      X509_NAME_ENTRY_free(pXVar7);\n                    }" { (expression_statement "ctx = (X509V3_CTX *)(iVar6 + -1);" (assignment_expression "ctx = (X509V3_CTX *)(iVar6 + -1)" identifier = (cast_expression "(X509V3_CTX *)(iVar6 + -1)" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -1)" ( (binary_expression "iVar6 + -1" identifier + number_literal) )))) ;) (expression_statement "pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6);" (assignment_expression "pXVar7 = X509_NAME_delete_entry(pXVar5,iVar6)" identifier = (call_expression "X509_NAME_delete_entry(pXVar5,iVar6)" identifier (argument_list "(pXVar5,iVar6)" ( identifier , identifier )))) ;) (expression_statement "X509_NAME_ENTRY_free(pXVar7);" (call_expression "X509_NAME_ENTRY_free(pXVar7)" identifier (argument_list "(pXVar7)" ( identifier ))) ;) })) (expression_statement "iVar6 = X509_set_subject_name(local_e0,pXVar5);" (assignment_expression "iVar6 = X509_set_subject_name(local_e0,pXVar5)" identifier = (call_expression "X509_set_subject_name(local_e0,pXVar5)" identifier (argument_list "(local_e0,pXVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                      X509_NAME_free(pXVar5);\n                      goto LAB_0002e94f;\n                    }" { (expression_statement "X509_NAME_free(pXVar5);" (call_expression "X509_NAME_free(pXVar5)" identifier (argument_list "(pXVar5)" ( identifier ))) ;) (goto_statement "goto LAB_0002e94f;" goto statement_identifier ;) })) (expression_statement "X509_NAME_free(pXVar5);" (call_expression "X509_NAME_free(pXVar5)" identifier (argument_list "(pXVar5)" ( identifier ))) ;) (goto_statement "goto LAB_0002e636;" goto statement_identifier ;) })) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" else (compound_statement "{\nLAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);\n                  row[5] = (OPENSSL_STRING)pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" { (labeled_statement "LAB_0002e636:\n                  pXVar5 = X509_get_subject_name(local_e0);" statement_identifier : (expression_statement "pXVar5 = X509_get_subject_name(local_e0);" (assignment_expression "pXVar5 = X509_get_subject_name(local_e0)" identifier = (call_expression "X509_get_subject_name(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;)) (expression_statement "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0)" identifier = (cast_expression "(ASN1_INTEGER *)X509_NAME_oneline(pXVar5,(char *)0x0,0)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_NAME_oneline(pXVar5,(char *)0x0,0)" identifier (argument_list "(pXVar5,(char *)0x0,0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))))) ;) (expression_statement "row[5] = (OPENSSL_STRING)pAVar25;" (assignment_expression "row[5] = (OPENSSL_STRING)pAVar25" (subscript_expression "row[5]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)pAVar25" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) identifier)) ;) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" if (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" identifier != (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    iVar6 = BN_is_zero(local_a0);\n                    if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar20 = "../apps/ca.c";\n                    row[3] = (OPENSSL_STRING)pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }\n                    iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar20 = ppcVar14[1];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);\n                    pcVar20 = ppcVar14[3];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);\n                    pcVar20 = ppcVar14[4];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);\n                    pcVar20 = ppcVar14[5];\n                    if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" { (expression_statement "iVar6 = BN_is_zero(local_a0);" (assignment_expression "iVar6 = BN_is_zero(local_a0)" identifier = (call_expression "BN_is_zero(local_a0)" identifier (argument_list "(local_a0)" ( identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0)" identifier = (cast_expression "(ASN1_INTEGER *)BN_bn2hex(local_a0)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "BN_bn2hex(local_a0)" identifier (argument_list "(local_a0)" ( identifier ))))) ;) }) (else_clause "else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" else (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" identifier = (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CRYPTO_strdup("00","../apps/ca.c",0x6c8)" identifier (argument_list "("00","../apps/ca.c",0x6c8)" ( (string_literal ""00"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal ))))) ;) }))) (expression_statement "pcVar20 = "../apps/ca.c";" (assignment_expression "pcVar20 = "../apps/ca.c"" identifier = (string_literal ""../apps/ca.c"" " string_content ")) ;) (expression_statement "row[3] = (OPENSSL_STRING)pAVar25;" (assignment_expression "row[3] = (OPENSSL_STRING)pAVar25" (subscript_expression "row[3]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)pAVar25" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) identifier)) ;) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" if (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" { (labeled_statement "LAB_0002eab4:\n                      BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);" statement_identifier : (expression_statement "BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25);" (call_expression "BIO_printf((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25)" identifier (argument_list "((BIO *)bio_err,"Memory allocation failure\n",pAVar25,pAVar25)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;)) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (if_statement "if (*row[5] == '\0') {\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" if (parenthesized_expression "(*row[5] == '\0')" ( (binary_expression "*row[5] == '\0'" (pointer_expression "*row[5]" * (subscript_expression "row[5]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      CRYPTO_free(row[5]);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);\n                      row[5] = (OPENSSL_STRING)pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" { (expression_statement "CRYPTO_free(row[5]);" (call_expression "CRYPTO_free(row[5])" identifier (argument_list "(row[5])" ( (subscript_expression "row[5]" identifier [ number_literal ]) ))) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7)" identifier = (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CRYPTO_strdup(row[3],"../apps/ca.c",0x6d7)" identifier (argument_list "(row[3],"../apps/ca.c",0x6d7)" ( (subscript_expression "row[3]" identifier [ number_literal ]) , (string_literal ""../apps/ca.c"" " string_content ") , number_literal ))))) ;) (expression_statement "row[5] = (OPENSSL_STRING)pAVar25;" (assignment_expression "row[5] = (OPENSSL_STRING)pAVar25" (subscript_expression "row[5]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)pAVar25" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) identifier)) ;) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;" if (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002eab4;" goto statement_identifier ;)) })) (if_statement "if (((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }" if (parenthesized_expression "(((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0))" ( (binary_expression "((local_8c->attributes).unique_subject == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" (parenthesized_expression "((local_8c->attributes).unique_subject == 0)" ( (binary_expression "(local_8c->attributes).unique_subject == 0" (field_expression "(local_8c->attributes).unique_subject" (parenthesized_expression "(local_8c->attributes)" ( (field_expression "local_8c->attributes" identifier -> field_identifier) )) . field_identifier) == number_literal) )) || (parenthesized_expression "(ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" ( (comma_expression "ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row),\n                       ppcVar14 == (OPENSSL_STRING *)0x0" (assignment_expression "ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row)" identifier = (call_expression "TXT_DB_get_by_index(*(TXT_DB **)local_a4,5,row)" identifier (argument_list "(*(TXT_DB **)local_a4,5,row)" ( (pointer_expression "*(TXT_DB **)local_a4" * (cast_expression "(TXT_DB **)local_a4" ( (type_descriptor "TXT_DB **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , number_literal , identifier )))) , (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" identifier == (cast_expression "(OPENSSL_STRING *)0x0" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                      ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[3];\n                      ppcVar37 = extraout_ECX;\n                      BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);\n                      pcVar20 = "      check the database/serial_file for corruption\n";\n                    }" { (expression_statement "ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row);" (assignment_expression "ppcVar14 = TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row)" identifier = (call_expression "TXT_DB_get_by_index(*(TXT_DB **)local_a4,3,row)" identifier (argument_list "(*(TXT_DB **)local_a4,3,row)" ( (pointer_expression "*(TXT_DB **)local_a4" * (cast_expression "(TXT_DB **)local_a4" ( (type_descriptor "TXT_DB **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , number_literal , identifier )))) ;) (if_statement "if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" if (parenthesized_expression "(ppcVar14 == (OPENSSL_STRING *)0x0)" ( (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" identifier == (cast_expression "(OPENSSL_STRING *)0x0" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }\n                        iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" { (if_statement "if (ext_copy == 0) {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }" if (parenthesized_expression "(ext_copy == 0)" ( (binary_expression "ext_copy == 0" identifier == number_literal) )) (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);\n                          iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);\n                        }" { (expression_statement "local_e4 = (EVP_PKEY *)&bio_err;" (assignment_expression "local_e4 = (EVP_PKEY *)&bio_err" identifier = (cast_expression "(EVP_PKEY *)&bio_err" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&bio_err" & identifier))) ;) (expression_statement "BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX);" (call_expression "BIO_printf((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX)" identifier (argument_list "((BIO *)bio_err,"Certificate Details:\n",extraout_ECX,\n                                     extraout_ECX)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Certificate Details:\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208);" (assignment_expression "iVar6 = X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208)" identifier = (call_expression "X509_print_ex(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208)" identifier (argument_list "(*(BIO **)local_e4,local_e0,default_op,\n                                                nameopt | 0x208)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , (binary_expression "nameopt | 0x208" identifier | number_literal) )))) ;) }) (else_clause "else {\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }" else (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&bio_err;\n                          iVar6 = 0;\n                        }" { (expression_statement "local_e4 = (EVP_PKEY *)&bio_err;" (assignment_expression "local_e4 = (EVP_PKEY *)&bio_err" identifier = (cast_expression "(EVP_PKEY *)&bio_err" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&bio_err" & identifier))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6);" (call_expression "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6)" identifier (argument_list "(*(BIO **)local_e4,"Certificate is to be certified until ",iVar6,\n                                   iVar6)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Certificate is to be certified until "" " string_content ") , identifier , identifier ))) ;) (expression_statement "a = (ASN1_TIME *)X509_get0_notAfter(local_e0);" (assignment_expression "a = (ASN1_TIME *)X509_get0_notAfter(local_e0)" identifier = (cast_expression "(ASN1_TIME *)X509_get0_notAfter(local_e0)" ( (type_descriptor "ASN1_TIME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_notAfter(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))))) ;) (expression_statement "iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a);" (assignment_expression "iVar6 = ASN1_TIME_print(*(BIO **)local_e4,a)" identifier = (call_expression "ASN1_TIME_print(*(BIO **)local_e4,a)" identifier (argument_list "(*(BIO **)local_e4,a)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier )))) ;) (if_statement "if (batch != 0) {\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }" if (parenthesized_expression "(batch != 0)" ( (binary_expression "batch != 0" identifier != number_literal) )) (compound_statement "{\n                          iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);\n                        }" { (expression_statement "iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6);" (assignment_expression "iVar6 = BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4," (%ld days)",batch,iVar6)" identifier (argument_list "(*(BIO **)local_e4," (%ld days)",batch,iVar6)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal "" (%ld days)"" " string_content ") , identifier , identifier )))) ;) })) (expression_statement "iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6);" (assignment_expression "iVar6 = BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4,"\n",iVar6,iVar6)" identifier (argument_list "(*(BIO **)local_e4,"\n",iVar6,iVar6)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""\n"" " escape_sequence ") , identifier , identifier )))) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (verbose == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" if (parenthesized_expression "(verbose == 0)" ( (binary_expression "verbose == 0" identifier == number_literal) )) (compound_statement "{\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          buf[0] = '\0';\n                          pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }" { (expression_statement "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6);" (call_expression "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6)" identifier (argument_list "(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar6,iVar6)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Sign the certificate? [y/n]:"" " string_content ") , identifier , identifier ))) ;) (expression_statement "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0)" identifier (argument_list "(*(BIO **)local_e4,0xb,0,(void *)0x0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "buf[0] = '\0';" (assignment_expression "buf[0] = '\0'" (subscript_expression "buf[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94);" (assignment_expression "pcVar15 = fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94)" identifier = (call_expression "fgets(buf,0x19,*(FILE **)PTR_stdin_000bdf94)" identifier (argument_list "(buf,0x19,*(FILE **)PTR_stdin_000bdf94)" ( identifier , number_literal , (pointer_expression "*(FILE **)PTR_stdin_000bdf94" * (cast_expression "(FILE **)PTR_stdin_000bdf94" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) )))) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" identifier (argument_list "(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n"" " string_content escape_sequence ") , number_literal , number_literal ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" else (compound_statement "{\n                            uVar16 = (byte)buf[0] & 0xffffffdf;\n                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" { (expression_statement "uVar16 = (byte)buf[0] & 0xffffffdf;" (assignment_expression "uVar16 = (byte)buf[0] & 0xffffffdf" identifier = (binary_expression "(byte)buf[0] & 0xffffffdf" (cast_expression "(byte)buf[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "buf[0]" identifier [ number_literal ])) & number_literal)) ;) (if_statement "if ((char)uVar16 == 'Y') goto LAB_0002ebcc;" if (parenthesized_expression "((char)uVar16 == 'Y')" ( (binary_expression "(char)uVar16 == 'Y'" (cast_expression "(char)uVar16" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'Y'" ' character ')) )) (goto_statement "goto LAB_0002ebcc;" goto statement_identifier ;)) (expression_statement "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16);" (call_expression "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16)" identifier (argument_list "(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar16,uVar16)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" else (compound_statement "{\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar6 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (BIO **)local_dc;\n                          iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" { (labeled_statement "LAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;" statement_identifier : (expression_statement "local_dc = (X509_NAME *)local_e4;" (assignment_expression "local_dc = (X509_NAME *)local_e4" identifier = (cast_expression "(X509_NAME *)local_e4" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);" (assignment_expression "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0)" identifier = (cast_expression "(EVP_PKEY *)X509_get0_pubkey(local_e0)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_pubkey(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))))) ;) (expression_statement "iVar6 = EVP_PKEY_missing_parameters(local_e4);" (assignment_expression "iVar6 = EVP_PKEY_missing_parameters(local_e4)" identifier = (call_expression "EVP_PKEY_missing_parameters(local_e4)" identifier (argument_list "(local_e4)" ( identifier )))) ;) (if_statement "if ((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" if (parenthesized_expression "((iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0))" ( (binary_expression "(iVar6 != 0) &&\n                             (iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0)" ( (comma_expression "iVar6 = EVP_PKEY_missing_parameters(local_9c), iVar6 == 0" (assignment_expression "iVar6 = EVP_PKEY_missing_parameters(local_9c)" identifier = (call_expression "EVP_PKEY_missing_parameters(local_9c)" identifier (argument_list "(local_9c)" ( identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" { (expression_statement "EVP_PKEY_copy_parameters(local_e4,local_9c);" (call_expression "EVP_PKEY_copy_parameters(local_e4,local_9c)" identifier (argument_list "(local_e4,local_9c)" ( identifier , identifier ))) ;) })) (expression_statement "local_d4 = (BIO **)local_dc;" (assignment_expression "local_d4 = (BIO **)local_dc" identifier = (cast_expression "(BIO **)local_dc" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90);" (assignment_expression "iVar6 = do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90)" identifier = (call_expression "do_X509_sign((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90)" identifier (argument_list "((X509 *)local_e0,(EVP_PKEY *)local_9c,local_94,\n                                               local_90)" ( (cast_expression "(X509 *)local_e0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(EVP_PKEY *)local_9c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 != 0) {\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                            uVar36 = 0x742;\n                            uVar12 = extraout_EDX_04;\n                            row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");\n                            memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            row[1][*(size_t *)local_e4] = '\0';\n                            row[2] = (OPENSSL_STRING)0x0;\n                            row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" { (expression_statement "uVar36 = 0x742;" (assignment_expression "uVar36 = 0x742" identifier = number_literal) ;) (expression_statement "uVar12 = extraout_EDX_04;" (assignment_expression "uVar12 = extraout_EDX_04" identifier = identifier) ;) (expression_statement "row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742);" (assignment_expression "row[0] = CRYPTO_strdup("V","../apps/ca.c",0x742)" (subscript_expression "row[0]" identifier [ number_literal ]) = (call_expression "CRYPTO_strdup("V","../apps/ca.c",0x742)" identifier (argument_list "("V","../apps/ca.c",0x742)" ( (string_literal ""V"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal )))) ;) (expression_statement "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12);" (assignment_expression "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12)" identifier = (cast_expression "(EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_notAfter(local_e0,pcVar20,uVar36,uVar12)" identifier (argument_list "(local_e0,pcVar20,uVar36,uVar12)" ( identifier , identifier , identifier , identifier ))))) ;) (expression_statement "local_dc = *(X509_NAME **)local_e4;" (assignment_expression "local_dc = *(X509_NAME **)local_e4" identifier = (pointer_expression "*(X509_NAME **)local_e4" * (cast_expression "(X509_NAME **)local_e4" ( (type_descriptor "X509_NAME **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate");" (assignment_expression "row[1] = (OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate")" (subscript_expression "row[1]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)\n                                     app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate")" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) (call_expression "app_malloc((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate")" identifier (argument_list "((int)((int)&((ASN1_INTEGER *)local_dc)->length + 1),\n                                                "row expdate")" ( (cast_expression "(int)((int)&((ASN1_INTEGER *)local_dc)->length + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&((ASN1_INTEGER *)local_dc)->length + 1)" ( (binary_expression "(int)&((ASN1_INTEGER *)local_dc)->length + 1" (cast_expression "(int)&((ASN1_INTEGER *)local_dc)->length" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((ASN1_INTEGER *)local_dc)->length" & (field_expression "((ASN1_INTEGER *)local_dc)->length" (parenthesized_expression "((ASN1_INTEGER *)local_dc)" ( (cast_expression "(ASN1_INTEGER *)local_dc" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) ))) , (string_literal ""row expdate"" " string_content ") ))))) ;) (expression_statement "memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);" (call_expression "memcpy(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" identifier (argument_list "(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" ( (subscript_expression "row[1]" identifier [ number_literal ]) , (pointer_expression "*(void **)((int)local_e4 + 8)" * (cast_expression "(void **)((int)local_e4 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_e4 + 8)" ( (binary_expression "(int)local_e4 + 8" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(size_t *)local_e4" * (cast_expression "(size_t *)local_e4" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "row[1][*(size_t *)local_e4] = '\0';" (assignment_expression "row[1][*(size_t *)local_e4] = '\0'" (subscript_expression "row[1][*(size_t *)local_e4]" (subscript_expression "row[1]" identifier [ number_literal ]) [ (pointer_expression "*(size_t *)local_e4" * (cast_expression "(size_t *)local_e4" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "row[2] = (OPENSSL_STRING)0x0;" (assignment_expression "row[2] = (OPENSSL_STRING)0x0" (subscript_expression "row[2]" identifier [ number_literal ]) = (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ;) (expression_statement "row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748);" (assignment_expression "row[4] = CRYPTO_strdup("unknown","../apps/ca.c",0x748)" (subscript_expression "row[4]" identifier [ number_literal ]) = (call_expression "CRYPTO_strdup("unknown","../apps/ca.c",0x748)" identifier (argument_list "("unknown","../apps/ca.c",0x748)" ( (string_literal ""unknown"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal )))) ;) (if_statement "if ((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)) {\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" if (parenthesized_expression "((((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0))" ( (binary_expression "(((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)) || (row[5] == (OPENSSL_STRING)0x0)" (parenthesized_expression "(((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0))" ( (binary_expression "((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 ) || (row[4] == (char *)0x0)" (parenthesized_expression "((row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)\n                                 )" ( (binary_expression "(row[0] == (OPENSSL_STRING)0x0) || (row[1] == (OPENSSL_STRING)0x0)" (parenthesized_expression "(row[0] == (OPENSSL_STRING)0x0)" ( (binary_expression "row[0] == (OPENSSL_STRING)0x0" (subscript_expression "row[0]" identifier [ number_literal ]) == (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) )) || (parenthesized_expression "(row[1] == (OPENSSL_STRING)0x0)" ( (binary_expression "row[1] == (OPENSSL_STRING)0x0" (subscript_expression "row[1]" identifier [ number_literal ]) == (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ))) )) || (parenthesized_expression "(row[4] == (char *)0x0)" ( (binary_expression "row[4] == (char *)0x0" (subscript_expression "row[4]" identifier [ number_literal ]) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(row[5] == (OPENSSL_STRING)0x0)" ( (binary_expression "row[5] == (OPENSSL_STRING)0x0" (subscript_expression "row[5]" identifier [ number_literal ]) == (cast_expression "(OPENSSL_STRING)0x0" ( (type_descriptor "OPENSSL_STRING" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n                              BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" { (expression_statement "BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4]);" (call_expression "BIO_printf((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4])" identifier (argument_list "((BIO *)*local_d4,"Memory allocation failure\n",row[4],\n                                         row[4])" ( (cast_expression "(BIO *)*local_d4" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_d4" * identifier)) , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , (subscript_expression "row[4]" identifier [ number_literal ]) , (subscript_expression "row[4]" identifier [ number_literal ]) ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" else (compound_statement "{\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");\n                              iVar6 = 0;\n                              do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" { (expression_statement "local_e4 = (EVP_PKEY *)local_d4;" (assignment_expression "local_e4 = (EVP_PKEY *)local_d4" identifier = (cast_expression "(EVP_PKEY *)local_d4" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space");" (assignment_expression "pAVar25 = (ASN1_INTEGER *)app_malloc(0x1c,"row space")" identifier = (cast_expression "(ASN1_INTEGER *)app_malloc(0x1c,"row space")" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "app_malloc(0x1c,"row space")" identifier (argument_list "(0x1c,"row space")" ( number_literal , (string_literal ""row space"" " string_content ") ))))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              } while (iVar6 != 6);" do (compound_statement "{\n                                (&pAVar25->length)[iVar6] = (int)row[iVar6];\n                                iVar6 = iVar6 + 1;\n                              }" { (expression_statement "(&pAVar25->length)[iVar6] = (int)row[iVar6];" (assignment_expression "(&pAVar25->length)[iVar6] = (int)row[iVar6]" (subscript_expression "(&pAVar25->length)[iVar6]" (parenthesized_expression "(&pAVar25->length)" ( (pointer_expression "&pAVar25->length" & (field_expression "pAVar25->length" identifier -> field_identifier)) )) [ identifier ]) = (cast_expression "(int)row[iVar6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "row[iVar6]" identifier [ identifier ]))) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 6)" ( (binary_expression "iVar6 != 6" identifier != number_literal) )) ;) (expression_statement "pAVar25[1].data = (uchar *)0x0;" (assignment_expression "pAVar25[1].data = (uchar *)0x0" (field_expression "pAVar25[1].data" (subscript_expression "pAVar25[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25);" (assignment_expression "iVar6 = TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25)" identifier = (call_expression "TXT_DB_insert(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25)" identifier (argument_list "(*(TXT_DB **)local_a4,(OPENSSL_STRING *)pAVar25)" ( (pointer_expression "*(TXT_DB **)local_a4" * (cast_expression "(TXT_DB **)local_a4" ( (type_descriptor "TXT_DB **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (cast_expression "(OPENSSL_STRING *)pAVar25" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar6 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = (X509 *)local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" { (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" identifier (argument_list "((void *)0x0)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" identifier (argument_list "(local_d8)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "*local_b0 = (X509 *)local_e0;" (assignment_expression "*local_b0 = (X509 *)local_e0" (pointer_expression "*local_b0" * identifier) = (cast_expression "(X509 *)local_e0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x1;" (assignment_expression "local_e4 = (EVP_PKEY *)0x1" identifier = (cast_expression "(EVP_PKEY *)0x1" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e343;" goto statement_identifier ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0)" identifier (argument_list "(*(BIO **)local_e4,"failed to update database\n",0,0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""failed to update database\n"" " string_content escape_sequence ") , number_literal , number_literal ))) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10));" (call_expression "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10))" identifier (argument_list "(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*(int *)local_a4 + 0x10))" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""TXT_DB error number %ld\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(*(int *)local_a4 + 0x10)" * (cast_expression "(undefined4 *)(*(int *)local_a4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)local_a4 + 0x10)" ( (binary_expression "*(int *)local_a4 + 0x10" (pointer_expression "*(int *)local_a4" * (cast_expression "(int *)local_a4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) }))) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (expression_statement "local_e4 = (EVP_PKEY *)&bio_err;" (assignment_expression "local_e4 = (EVP_PKEY *)&bio_err" identifier = (cast_expression "(EVP_PKEY *)&bio_err" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&bio_err" & identifier))) ;) (expression_statement "pcVar35 = row[3];" (assignment_expression "pcVar35 = row[3]" identifier = (subscript_expression "row[3]" identifier [ number_literal ])) ;) (expression_statement "ppcVar37 = extraout_ECX;" (assignment_expression "ppcVar37 = extraout_ECX" identifier = identifier) ;) (expression_statement "BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX);" (call_expression "BIO_printf((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX)" identifier (argument_list "((BIO *)bio_err,"ERROR:Serial number %s has already been issued,\n",\n                                 row[3],extraout_ECX)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""ERROR:Serial number %s has already been issued,\n"" " string_content escape_sequence ") , (subscript_expression "row[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "pcVar20 = "      check the database/serial_file for corruption\n";" (assignment_expression "pcVar20 = "      check the database/serial_file for corruption\n"" identifier = (string_literal ""      check the database/serial_file for corruption\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }" else (compound_statement "{\n                      pcVar20 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&bio_err;\n                      pcVar35 = row[5];\n                      ppcVar37 = ppcVar14;\n                    }" { (expression_statement "pcVar20 = "ERROR:There is already a certificate for %s\n";" (assignment_expression "pcVar20 = "ERROR:There is already a certificate for %s\n"" identifier = (string_literal ""ERROR:There is already a certificate for %s\n"" " string_content escape_sequence ")) ;) (expression_statement "local_e4 = (EVP_PKEY *)&bio_err;" (assignment_expression "local_e4 = (EVP_PKEY *)&bio_err" identifier = (cast_expression "(EVP_PKEY *)&bio_err" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&bio_err" & identifier))) ;) (expression_statement "pcVar35 = row[5];" (assignment_expression "pcVar35 = row[5]" identifier = (subscript_expression "row[5]" identifier [ number_literal ])) ;) (expression_statement "ppcVar37 = ppcVar14;" (assignment_expression "ppcVar37 = ppcVar14" identifier = identifier) ;) }))) (expression_statement "iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37);" (assignment_expression "iVar6 = BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37)" identifier (argument_list "(*(BIO **)local_e4,pcVar20,pcVar35,ppcVar37)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , identifier )))) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6);" (call_expression "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6)" identifier (argument_list "(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar6,iVar6)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""The matching entry has the following details\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "cVar2 = **ppcVar14;" (assignment_expression "cVar2 = **ppcVar14" identifier = (pointer_expression "**ppcVar14" * (pointer_expression "*ppcVar14" * identifier))) ;) (if_statement "if (cVar2 == 'E') {\n                      pcVar20 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'E')" ( (binary_expression "cVar2 == 'E'" identifier == (char_literal "'E'" ' character ')) )) (compound_statement "{\n                      pcVar20 = "Expired";\n                    }" { (expression_statement "pcVar20 = "Expired";" (assignment_expression "pcVar20 = "Expired"" identifier = (string_literal ""Expired"" " string_content ")) ;) }) (else_clause "else if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }" else (if_statement "if (cVar2 == 'R') {\n                      pcVar20 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'R')" ( (binary_expression "cVar2 == 'R'" identifier == (char_literal "'R'" ' character ')) )) (compound_statement "{\n                      pcVar20 = "Revoked";\n                    }" { (expression_statement "pcVar20 = "Revoked";" (assignment_expression "pcVar20 = "Revoked"" identifier = (string_literal ""Revoked"" " string_content ")) ;) }) (else_clause "else if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }" else (if_statement "if (cVar2 == 'V') {\n                      pcVar20 = "Valid";\n                    }\n                    else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'V')" ( (binary_expression "cVar2 == 'V'" identifier == (char_literal "'V'" ' character ')) )) (compound_statement "{\n                      pcVar20 = "Valid";\n                    }" { (expression_statement "pcVar20 = "Valid";" (assignment_expression "pcVar20 = "Valid"" identifier = (string_literal ""Valid"" " string_content ")) ;) }) (else_clause "else {\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }" else (compound_statement "{\n                      pcVar20 = "\ninvalid type, Data base error\n";\n                    }" { (expression_statement "pcVar20 = "\ninvalid type, Data base error\n";" (assignment_expression "pcVar20 = "\ninvalid type, Data base error\n"" identifier = (string_literal ""\ninvalid type, Data base error\n"" " escape_sequence string_content escape_sequence ")) ;) }))))))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX);" (call_expression "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX)" identifier (argument_list "(*(BIO **)local_e4,"Type          :%s\n",pcVar20,extraout_EDX)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Type          :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar12 = extraout_EDX_00;" (assignment_expression "uVar12 = extraout_EDX_00" identifier = identifier) ;) (if_statement "if (**ppcVar14 == 'R') {\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" if (parenthesized_expression "(**ppcVar14 == 'R')" ( (binary_expression "**ppcVar14 == 'R'" (pointer_expression "**ppcVar14" * (pointer_expression "*ppcVar14" * identifier)) == (char_literal "'R'" ' character ')) )) (compound_statement "{\n                      pcVar20 = ppcVar14[1];\n                      if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" { (expression_statement "pcVar20 = ppcVar14[1];" (assignment_expression "pcVar20 = ppcVar14[1]" identifier = (subscript_expression "ppcVar14[1]" identifier [ number_literal ])) ;) (if_statement "if (pcVar20 == (char *)0x0) {\n                        pcVar20 = "undef";\n                      }" if (parenthesized_expression "(pcVar20 == (char *)0x0)" ( (binary_expression "pcVar20 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        pcVar20 = "undef";\n                      }" { (expression_statement "pcVar20 = "undef";" (assignment_expression "pcVar20 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00);" (call_expression "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00)" identifier (argument_list "(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar20,extraout_EDX_00)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Was revoked on:%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar12 = extraout_EDX_03;" (assignment_expression "uVar12 = extraout_EDX_03" identifier = identifier) ;) })) (expression_statement "pcVar20 = ppcVar14[1];" (assignment_expression "pcVar20 = ppcVar14[1]" identifier = (subscript_expression "ppcVar14[1]" identifier [ number_literal ])) ;) (if_statement "if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }" if (parenthesized_expression "(pcVar20 == (char *)0x0)" ( (binary_expression "pcVar20 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar20 = "undef";\n                    }" { (expression_statement "pcVar20 = "undef";" (assignment_expression "pcVar20 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12);" (call_expression "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12)" identifier (argument_list "(*(BIO **)local_e4,"Expires on    :%s\n",pcVar20,uVar12)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Expires on    :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar20 = ppcVar14[3];" (assignment_expression "pcVar20 = ppcVar14[3]" identifier = (subscript_expression "ppcVar14[3]" identifier [ number_literal ])) ;) (if_statement "if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }" if (parenthesized_expression "(pcVar20 == (char *)0x0)" ( (binary_expression "pcVar20 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar20 = "undef";\n                    }" { (expression_statement "pcVar20 = "undef";" (assignment_expression "pcVar20 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01);" (call_expression "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01)" identifier (argument_list "(*(BIO **)local_e4,"Serial Number :%s\n",pcVar20,extraout_EDX_01)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Serial Number :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar20 = ppcVar14[4];" (assignment_expression "pcVar20 = ppcVar14[4]" identifier = (subscript_expression "ppcVar14[4]" identifier [ number_literal ])) ;) (if_statement "if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }" if (parenthesized_expression "(pcVar20 == (char *)0x0)" ( (binary_expression "pcVar20 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar20 = "undef";\n                    }" { (expression_statement "pcVar20 = "undef";" (assignment_expression "pcVar20 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02);" (call_expression "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02)" identifier (argument_list "(*(BIO **)local_e4,"File name     :%s\n",pcVar20,extraout_EDX_02)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""File name     :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar20 = ppcVar14[5];" (assignment_expression "pcVar20 = ppcVar14[5]" identifier = (subscript_expression "ppcVar14[5]" identifier [ number_literal ])) ;) (if_statement "if (pcVar20 == (char *)0x0) {\n                      pcVar20 = "undef";\n                    }" if (parenthesized_expression "(pcVar20 == (char *)0x0)" ( (binary_expression "pcVar20 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar20 = "undef";\n                    }" { (expression_statement "pcVar20 = "undef";" (assignment_expression "pcVar20 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14);" (call_expression "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14)" identifier (argument_list "(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar20,ppcVar14)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Subject Name  :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) }))) (expression_statement "BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx);" (call_expression "BIO_printf((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx)" identifier (argument_list "((BIO *)bio_err,"Memory allocation failure\n",ctx,ctx)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;" statement_identifier : (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) })) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }))) }) (else_clause "else {\n    pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);\n    if (pXVar5 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors((BIO *)bio_err);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" else (compound_statement "{\n    pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);\n    if (pXVar5 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors((BIO *)bio_err);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" { (expression_statement "pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn);" (assignment_expression "pXVar5 = (X509_NAME *)parse_name((char *)chtype,multirdn,email_dn)" identifier = (cast_expression "(X509_NAME *)parse_name((char *)chtype,multirdn,email_dn)" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "parse_name((char *)chtype,multirdn,email_dn)" identifier (argument_list "((char *)chtype,multirdn,email_dn)" ( (cast_expression "(char *)chtype" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))))) ;) (if_statement "if (pXVar5 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }" if (parenthesized_expression "(pXVar5 != (X509_NAME *)0x0)" ( (binary_expression "pXVar5 != (X509_NAME *)0x0" identifier != (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);\n      X509_NAME_free(pXVar5);\n      goto LAB_0002dcb3;\n    }" { (expression_statement "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5);" (call_expression "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar5)" identifier (argument_list "((X509_REQ *)local_b4,pXVar5)" ( (cast_expression "(X509_REQ *)local_b4" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "X509_NAME_free(pXVar5);" (call_expression "X509_NAME_free(pXVar5)" identifier (argument_list "(pXVar5)" ( identifier ))) ;) (goto_statement "goto LAB_0002dcb3;" goto statement_identifier ;) })) (expression_statement "ERR_print_errors((BIO *)bio_err);" (call_expression "ERR_print_errors((BIO *)bio_err)" identifier (argument_list "((BIO *)bio_err)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0002e2e5:\n  ppcVar27 = row;" statement_identifier : (expression_statement "ppcVar27 = row;" (assignment_expression "ppcVar27 = row" identifier = identifier) ;)) (expression_statement "local_dc = (X509_NAME *)pAVar25;" (assignment_expression "local_dc = (X509_NAME *)pAVar25" identifier = (cast_expression "(X509_NAME *)pAVar25" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    ppcVar28 = ppcVar27 + 1;\n    CRYPTO_free(*ppcVar27);\n    ppcVar27 = ppcVar28;\n  } while ((OPENSSL_STRING *)local_3c != ppcVar28);" do (compound_statement "{\n    ppcVar28 = ppcVar27 + 1;\n    CRYPTO_free(*ppcVar27);\n    ppcVar27 = ppcVar28;\n  }" { (expression_statement "ppcVar28 = ppcVar27 + 1;" (assignment_expression "ppcVar28 = ppcVar27 + 1" identifier = (binary_expression "ppcVar27 + 1" identifier + number_literal)) ;) (expression_statement "CRYPTO_free(*ppcVar27);" (call_expression "CRYPTO_free(*ppcVar27)" identifier (argument_list "(*ppcVar27)" ( (pointer_expression "*ppcVar27" * identifier) ))) ;) (expression_statement "ppcVar27 = ppcVar28;" (assignment_expression "ppcVar27 = ppcVar28" identifier = identifier) ;) }) while (parenthesized_expression "((OPENSSL_STRING *)local_3c != ppcVar28)" ( (binary_expression "(OPENSSL_STRING *)local_3c != ppcVar28" (cast_expression "(OPENSSL_STRING *)local_3c" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "CRYPTO_free(local_dc);" (call_expression "CRYPTO_free(local_dc)" identifier (argument_list "(local_dc)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" identifier (argument_list "(local_d8)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "X509_free(local_e0);" (call_expression "X509_free(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))) ;) (labeled_statement "LAB_0002e343:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)local_e4;\n  }" statement_identifier : (if_statement "if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)local_e4;\n  }" if (parenthesized_expression "(iVar3 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return (int)local_e4;\n  }" { (return_statement "return (int)local_e4;" return (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (labeled_statement "joined_r0x0002efd1:\n  pbVar24 = pbVar10;" statement_identifier : (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" identifier = identifier) ;)) (if_statement "if (pXVar7 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar6 == 0) {\n      pcVar20 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" if (parenthesized_expression "(pXVar7 != (X509_NAME_ENTRY *)0x0)" ( (binary_expression "pXVar7 != (X509_NAME_ENTRY *)0x0" identifier != (cast_expression "(X509_NAME_ENTRY *)0x0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar6 == 0) {\n      pcVar20 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" { (labeled_statement "LAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;" statement_identifier : (expression_statement "pbVar21 = (byte *)0xffffffff;" (assignment_expression "pbVar21 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0);" (assignment_expression "iVar6 = X509_NAME_add_entry(local_b8,pXVar7,-1,0)" identifier = (call_expression "X509_NAME_add_entry(local_b8,pXVar7,-1,0)" identifier (argument_list "(local_b8,pXVar7,-1,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n      pcVar20 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar20 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" { (expression_statement "pcVar20 = "Memory allocation failure\n";" (assignment_expression "pcVar20 = "Memory allocation failure\n"" identifier = (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_0002e14e;" goto statement_identifier ;) (while_statement "while( true ) {\n    iVar6 = iVar6 + -1;\n    bVar31 = *pbVar24 < *pbVar10;\n    bVar30 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    if (!bVar30) break;\ncode_r0x0002e27e:\n    if (iVar6 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar6 = iVar6 + -1;\n    bVar31 = *pbVar24 < *pbVar10;\n    bVar30 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    if (!bVar30) break;\ncode_r0x0002e27e:\n    if (iVar6 == 0) break;\n  }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar31 = *pbVar24 < *pbVar10;" (assignment_expression "bVar31 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar30 = *pbVar24 == *pbVar10;" (assignment_expression "bVar30 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (!bVar30) break;" if (parenthesized_expression "(!bVar30)" ( (unary_expression "!bVar30" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x0002e27e:\n    if (iVar6 == 0) break;" statement_identifier : (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "bVar33 = false;" (assignment_expression "bVar33 = false" identifier = false) ;) (expression_statement "bVar30 = (!bVar31 && !bVar30) == bVar31;" (assignment_expression "bVar30 = (!bVar31 && !bVar30) == bVar31" identifier = (binary_expression "(!bVar31 && !bVar30) == bVar31" (parenthesized_expression "(!bVar31 && !bVar30)" ( (binary_expression "!bVar31 && !bVar30" (unary_expression "!bVar31" ! identifier) && (unary_expression "!bVar30" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar30) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar20 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar6 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    } while (bVar30);\n    if ((!bVar33 && !bVar30) == bVar33) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" if (parenthesized_expression "(bVar30)" ( identifier )) (compound_statement "{\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar20 = "The %s field needed to be supplied and was missing\n";\n  }" { (labeled_statement "LAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);" statement_identifier : (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar20 = "The %s field needed to be supplied and was missing\n";" (assignment_expression "pcVar20 = "The %s field needed to be supplied and was missing\n"" identifier = (string_literal ""The %s field needed to be supplied and was missing\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\n    iVar6 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    } while (bVar30);\n    if ((!bVar33 && !bVar30) == bVar33) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" else (compound_statement "{\n    iVar6 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    } while (bVar30);\n    if ((!bVar33 && !bVar30) == bVar33) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" { (expression_statement "iVar6 = 6;" (assignment_expression "iVar6 = 6" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"match";" (assignment_expression "pbVar10 = (byte *)"match"" identifier = (cast_expression "(byte *)"match"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""match"" " string_content "))) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    } while (bVar30);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar33 = *pbVar24 < *pbVar10;\n      bVar30 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;\n    }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar33 = *pbVar24 < *pbVar10;" (assignment_expression "bVar33 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar30 = *pbVar24 == *pbVar10;" (assignment_expression "bVar30 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar34 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar34 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar34 * -2" identifier + (binary_expression "(uint)bVar34 * -2" (cast_expression "(uint)bVar34" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar30)" ( identifier )) ;) (if_statement "if ((!bVar33 && !bVar30) == bVar33) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }" if (parenthesized_expression "((!bVar33 && !bVar30) == bVar33)" ( (binary_expression "(!bVar33 && !bVar30) == bVar33" (parenthesized_expression "(!bVar33 && !bVar30)" ( (binary_expression "!bVar33 && !bVar30" (unary_expression "!bVar33" ! identifier) && (unary_expression "!bVar30" ! identifier)) )) == identifier) )) (compound_statement "{\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar20 = "The mandatory %s field was missing\n";\n    }" { (labeled_statement "LAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);" statement_identifier : (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar20 = "The mandatory %s field was missing\n";" (assignment_expression "pcVar20 = "The mandatory %s field was missing\n"" identifier = (string_literal ""The mandatory %s field was missing\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }" else (compound_statement "{\nLAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";\n    }" { (labeled_statement "LAB_0002e921:\n      pcVar20 = "%s:invalid type in \'policy\' configuration\n";" statement_identifier : (expression_statement "pcVar20 = "%s:invalid type in \'policy\' configuration\n";" (assignment_expression "pcVar20 = "%s:invalid type in \'policy\' configuration\n"" identifier = (string_literal ""%s:invalid type in \'policy\' configuration\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;)) }))) }))) (labeled_statement "LAB_0002e2b5:\n  BIO_printf((BIO *)bio_err,pcVar20,pbVar21);" statement_identifier : (expression_statement "BIO_printf((BIO *)bio_err,pcVar20,pbVar21);" (call_expression "BIO_printf((BIO *)bio_err,pcVar20,pbVar21)" identifier (argument_list "((BIO *)bio_err,pcVar20,pbVar21)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;)) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;) })))
(translation_unit "undefined4 __regparm3\nFUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)\n\n{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    \n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}\n\n" (function_definition "undefined4 __regparm3\nFUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)\n\n{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    \n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)" identifier (parameter_list "(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "EVP_PKEY *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "X509 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int *param_7" primitive_type (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int *param_8" primitive_type (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "BIGNUM *param_9" type_identifier (pointer_declarator "*param_9" * identifier)) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "undefined4 param_11" type_identifier identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "int param_13" primitive_type identifier) , (parameter_declaration "undefined4 param_14" type_identifier identifier) , (parameter_declaration "int param_15" primitive_type identifier) , (parameter_declaration "X509 *param_16" type_identifier (pointer_declarator "*param_16" * identifier)) , (parameter_declaration "int param_17" primitive_type identifier) , (parameter_declaration "int param_18" primitive_type identifier) , (parameter_declaration "X509V3_CTX *param_19" type_identifier (pointer_declarator "*param_19" * identifier)) , (parameter_declaration "char *param_20" primitive_type (pointer_declarator "*param_20" * identifier)) , (parameter_declaration "CONF *param_21" type_identifier (pointer_declarator "*param_21" * identifier)) , (parameter_declaration "uint param_22" type_identifier identifier) , (parameter_declaration "ulong param_23" type_identifier identifier) , (parameter_declaration "int param_24" primitive_type identifier) , (parameter_declaration "undefined4 param_25" type_identifier identifier) , (parameter_declaration "X509 *param_26" type_identifier (pointer_declarator "*param_26" * identifier)) ))) (compound_statement "{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    \n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "BIO *pBVar3;" type_identifier (pointer_declarator "*pBVar3" * identifier) ;) (declaration "CONF *conf;" type_identifier (pointer_declarator "*conf" * identifier) ;) (declaration "X509_NAME *pXVar4;" type_identifier (pointer_declarator "*pXVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "X509_NAME_ENTRY *pXVar6;" type_identifier (pointer_declarator "*pXVar6" * identifier) ;) (declaration "ASN1_STRING *pAVar7;" type_identifier (pointer_declarator "*pAVar7" * identifier) ;) (declaration "ASN1_OBJECT *o;" type_identifier (pointer_declarator "*o" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "X509 *pXVar11;" type_identifier (pointer_declarator "*pXVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "EVP_PKEY *pEVar13;" type_identifier (pointer_declarator "*pEVar13" * identifier) ;) (declaration "OPENSSL_STRING *ppcVar14;" type_identifier (pointer_declarator "*ppcVar14" * identifier) ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "ASN1_TIME *a;" type_identifier (pointer_declarator "*a" * identifier) ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int loc;" primitive_type identifier ;) (declaration "uchar *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "X509 *pXVar20;" type_identifier (pointer_declarator "*pXVar20" * identifier) ;) (declaration "OPENSSL_STRING *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_00;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_01;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_02;" type_identifier identifier ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "undefined4 extraout_EDX_03;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_04;" type_identifier identifier ;) (declaration "uchar *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "X509V3_CTX *ctx;" type_identifier (pointer_declarator "*ctx" * identifier) ;) (declaration "ASN1_INTEGER *pAVar25;" type_identifier (pointer_declarator "*pAVar25" * identifier) ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 uVar27;" type_identifier identifier ;) (declaration "bool bVar28;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "undefined1 uVar30;" type_identifier identifier ;) (declaration "bool bVar31;" primitive_type identifier ;) (declaration "byte bVar32;" type_identifier identifier ;) (declaration "undefined8 uVar33;" type_identifier identifier ;) (declaration "undefined4 uVar34;" type_identifier identifier ;) (declaration "OPENSSL_STRING *ppcVar35;" type_identifier (pointer_declarator "*ppcVar35" * identifier) ;) (declaration "X509 *x;" type_identifier (pointer_declarator "*x" * identifier) ;) (declaration "undefined1 auStack_ec [8];" type_identifier (array_declarator "auStack_ec [8]" identifier [ number_literal ]) ;) (declaration "EVP_PKEY *local_e4;" type_identifier (pointer_declarator "*local_e4" * identifier) ;) (declaration "X509 *local_e0;" type_identifier (pointer_declarator "*local_e0" * identifier) ;) (declaration "X509_NAME *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "X509_NAME *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "char *local_d4;" primitive_type (pointer_declarator "*local_d4" * identifier) ;) (declaration "char *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "undefined4 local_cc;" type_identifier identifier ;) (declaration "ASN1_STRING *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "ASN1_STRING *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "byte *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "byte *local_bc;" type_identifier (pointer_declarator "*local_bc" * identifier) ;) (declaration "X509_NAME *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "X509V3_CTX *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "undefined4 *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "X509 *local_ac;" type_identifier (pointer_declarator "*local_ac" * identifier) ;) (declaration "char *local_a8;" primitive_type (pointer_declarator "*local_a8" * identifier) ;) (declaration "int *local_a4;" primitive_type (pointer_declarator "*local_a4" * identifier) ;) (declaration "BIGNUM *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "EVP_PKEY *local_9c;" type_identifier (pointer_declarator "*local_9c" * identifier) ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "int *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "CONF *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "X509V3_CTX local_70;" type_identifier identifier ;) (declaration "OPENSSL_STRING local_54;" type_identifier identifier ;) (declaration "void *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "ASN1_INTEGER *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "char *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "ASN1_INTEGER *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "char acStack_23 [3];" primitive_type (array_declarator "acStack_23 [3]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (expression_statement "bVar32 = 0;" (assignment_expression "bVar32 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x2db89;" (assignment_expression "uStack_14 = 0x2db89" identifier = number_literal) ;) (expression_statement "local_94 = param_4;" (assignment_expression "local_94 = param_4" identifier = identifier) ;) (expression_statement "local_90 = param_5;" (assignment_expression "local_90 = param_5" identifier = identifier) ;) (expression_statement "local_88 = param_14;" (assignment_expression "local_88 = param_14" identifier = identifier) ;) (expression_statement "local_cc = param_6;" (assignment_expression "local_cc = param_6" identifier = identifier) ;) (expression_statement "local_98 = param_15;" (assignment_expression "local_98 = param_15" identifier = identifier) ;) (expression_statement "local_8c = param_7;" (assignment_expression "local_8c = param_7" identifier = identifier) ;) (expression_statement "local_b4 = param_19;" (assignment_expression "local_b4 = param_19" identifier = identifier) ;) (expression_statement "local_a4 = param_8;" (assignment_expression "local_a4 = param_8" identifier = identifier) ;) (expression_statement "local_a8 = param_20;" (assignment_expression "local_a8 = param_20" identifier = identifier) ;) (expression_statement "local_a0 = param_9;" (assignment_expression "local_a0 = param_9" identifier = identifier) ;) (expression_statement "local_84 = param_21;" (assignment_expression "local_84 = param_21" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_54 = (char *)0x0;" (assignment_expression "local_54 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = (void *)0x0;" (assignment_expression "local_50 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_48 = (ASN1_INTEGER *)0x0;" (assignment_expression "local_48 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_44 = (char *)0x0;" (assignment_expression "local_44 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_40 = (ASN1_INTEGER *)0x0;" (assignment_expression "local_40 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_ac = param_3;" (assignment_expression "local_ac = param_3" identifier = identifier) ;) (expression_statement "local_9c = param_2;" (assignment_expression "local_9c = param_2" identifier = identifier) ;) (if_statement "if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" if (parenthesized_expression "(param_10 == 0)" ( (binary_expression "param_10 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }" { (labeled_statement "LAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" statement_identifier : (if_statement "if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" if (parenthesized_expression "(param_24 != 0)" ( (binary_expression "param_24 != 0" identifier != number_literal) )) (compound_statement "{\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" { (expression_statement "BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");" (call_expression "BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n")" identifier (argument_list "(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n")" ( identifier , (string_literal ""The Subject\'s Distinguished Name is as follows\n"" " string_content escape_sequence string_content escape_sequence ") ))) ;) }))) (expression_statement "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);" (assignment_expression "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4)" identifier = (cast_expression "(X509_NAME *)X509_REQ_get_subject_name(local_b4)" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_REQ_get_subject_name(local_b4)" identifier (argument_list "(local_b4)" ( identifier ))))) ;) (expression_statement "local_d8 = (X509_NAME *)&DAT_000c458c;" (assignment_expression "local_d8 = (X509_NAME *)&DAT_000c458c" identifier = (cast_expression "(X509_NAME *)&DAT_000c458c" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" while (parenthesized_expression "(iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5)" ( (comma_expression "iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5" (assignment_expression "iVar5 = X509_NAME_entry_count(local_dc)" identifier = (call_expression "X509_NAME_entry_count(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) , (binary_expression "(int)local_e4 < iVar5" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) )) (compound_statement "{\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" { (expression_statement "pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4)" identifier = (call_expression "X509_NAME_get_entry(local_dc,(int)local_e4)" identifier (argument_list "(local_dc,(int)local_e4)" ( identifier , (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);" (assignment_expression "pAVar7 = X509_NAME_ENTRY_get_data(pXVar6)" identifier = (call_expression "X509_NAME_ENTRY_get_data(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier )))) ;) (expression_statement "o = X509_NAME_ENTRY_get_object(pXVar6);" (assignment_expression "o = X509_NAME_ENTRY_get_object(pXVar6)" identifier = (call_expression "X509_NAME_ENTRY_get_object(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier )))) ;) (expression_statement "iVar5 = OBJ_obj2nid(o);" (assignment_expression "iVar5 = OBJ_obj2nid(o)" identifier = (call_expression "OBJ_obj2nid(o)" identifier (argument_list "(o)" ( identifier )))) ;) (if_statement "if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" if (parenthesized_expression "(DAT_000c44e8 != 0)" ( (binary_expression "DAT_000c44e8 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" { (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) (if_statement "if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }" if (parenthesized_expression "(iVar18 == 0x1c)" ( (binary_expression "iVar18 == 0x1c" identifier == number_literal) )) (compound_statement "{\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }" { (expression_statement "ASN1_UNIVERSALSTRING_to_string(pAVar7);" (call_expression "ASN1_UNIVERSALSTRING_to_string(pAVar7)" identifier (argument_list "(pAVar7)" ( identifier ))) ;) (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) })) (if_statement "if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" if (parenthesized_expression "(iVar18 == 0x16)" ( (binary_expression "iVar18 == 0x16" identifier == number_literal) )) (compound_statement "{\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }" { (if_statement "if (iVar5 == 0x30) goto LAB_0002dfb4;" if (parenthesized_expression "(iVar5 == 0x30)" ( (binary_expression "iVar5 == 0x30" identifier == number_literal) )) (goto_statement "goto LAB_0002dfb4;" goto statement_identifier ;)) (expression_statement "pAVar7->type = 0x14;" (assignment_expression "pAVar7->type = 0x14" (field_expression "pAVar7->type" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" else (compound_statement "{\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" { (if_statement "if (iVar5 != 0x30) goto LAB_0002dd0e;" if (parenthesized_expression "(iVar5 != 0x30)" ( (binary_expression "iVar5 != 0x30" identifier != number_literal) )) (goto_statement "goto LAB_0002dd0e;" goto statement_identifier ;)) (if_statement "if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }" if (parenthesized_expression "(iVar18 == 0x13)" ( (binary_expression "iVar18 == 0x13" identifier == number_literal) )) (compound_statement "{\n            pAVar7->type = 0x16;\n          }" { (expression_statement "pAVar7->type = 0x16;" (assignment_expression "pAVar7->type = 0x16" (field_expression "pAVar7->type" identifier -> field_identifier) = number_literal) ;) })) (labeled_statement "LAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;" statement_identifier : (if_statement "if (param_13 == 0) goto LAB_0002dd2b;" if (parenthesized_expression "(param_13 == 0)" ( (binary_expression "param_13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002dd2b;" goto statement_identifier ;))) (if_statement "if (pAVar7->type != 0x16) goto LAB_0002dfcf;" if (parenthesized_expression "(pAVar7->type != 0x16)" ( (binary_expression "pAVar7->type != 0x16" (field_expression "pAVar7->type" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_0002dfcf;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);" statement_identifier : (expression_statement "iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);" (assignment_expression "iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length)" identifier = (call_expression "ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length)" identifier (argument_list "(pAVar7->data,pAVar7->length)" ( (field_expression "pAVar7->data" identifier -> field_identifier) , (field_expression "pAVar7->length" identifier -> field_identifier) )))) ;)) (if_statement "if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" if (parenthesized_expression "(iVar5 == 0x14)" ( (binary_expression "iVar5 == 0x14" identifier == number_literal) )) (compound_statement "{\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }" { (if_statement "if (pAVar7->type == 0x14) goto LAB_0002dd1c;" if (parenthesized_expression "(pAVar7->type == 0x14)" ( (binary_expression "pAVar7->type == 0x14" (field_expression "pAVar7->type" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_0002dd1c;" goto statement_identifier ;)) }) (else_clause "else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" else (if_statement "if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" if (parenthesized_expression "((iVar5 != 0x16) || (pAVar7->type != 0x13))" ( (binary_expression "(iVar5 != 0x16) || (pAVar7->type != 0x13)" (parenthesized_expression "(iVar5 != 0x16)" ( (binary_expression "iVar5 != 0x16" identifier != number_literal) )) || (parenthesized_expression "(pAVar7->type != 0x13)" ( (binary_expression "pAVar7->type != 0x13" (field_expression "pAVar7->type" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" { (labeled_statement "LAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" statement_identifier : (if_statement "if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" if (parenthesized_expression "(param_24 != 0)" ( (binary_expression "param_24 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" { (expression_statement "iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);" (assignment_expression "iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" identifier = (call_expression "i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" identifier (argument_list "(*(BIO **)local_d8,o)" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier )))) ;) (expression_statement "pcVar15 = (char *)((int)&local_3c + 3);" (assignment_expression "pcVar15 = (char *)((int)&local_3c + 3)" identifier = (cast_expression "(char *)((int)&local_3c + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_3c + 3)" ( (binary_expression "(int)&local_3c + 3" (cast_expression "(int)&local_3c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_3c" & identifier)) + number_literal) )))) ;) (expression_statement "pcVar16 = pcVar15;" (assignment_expression "pcVar16 = pcVar15" identifier = identifier) ;) (if_statement "if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }" if (parenthesized_expression "(0 < 0x16 - iVar5)" ( (binary_expression "0 < 0x16 - iVar5" number_literal < (binary_expression "0x16 - iVar5" number_literal - identifier)) )) (compound_statement "{\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }" { (expression_statement "pcVar9 = pcVar15;" (assignment_expression "pcVar9 = pcVar15" identifier = identifier) ;) (do_statement "do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);" do (compound_statement "{\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              }" { (expression_statement "pcVar8 = pcVar9 + 1;" (assignment_expression "pcVar8 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar9 = ' ';" (assignment_expression "*pcVar9 = ' '" (pointer_expression "*pcVar9" * identifier) = (char_literal "' '" ' character ')) ;) (expression_statement "pcVar9 = pcVar8;" (assignment_expression "pcVar9 = pcVar8" identifier = identifier) ;) (expression_statement "pcVar16 = pcVar15 + (0x16 - iVar5);" (assignment_expression "pcVar16 = pcVar15 + (0x16 - iVar5)" identifier = (binary_expression "pcVar15 + (0x16 - iVar5)" identifier + (parenthesized_expression "(0x16 - iVar5)" ( (binary_expression "0x16 - iVar5" number_literal - identifier) )))) ;) }) while (parenthesized_expression "(pcVar15 + (0x16 - iVar5) != pcVar8)" ( (binary_expression "pcVar15 + (0x16 - iVar5) != pcVar8" (binary_expression "pcVar15 + (0x16 - iVar5)" identifier + (parenthesized_expression "(0x16 - iVar5)" ( (binary_expression "0x16 - iVar5" number_literal - identifier) ))) != identifier) )) ;) })) (expression_statement "pcVar16[0] = ':';" (assignment_expression "pcVar16[0] = ':'" (subscript_expression "pcVar16[0]" identifier [ number_literal ]) = (char_literal "':'" ' character ')) ;) (expression_statement "pcVar16[1] = '\0';" (assignment_expression "pcVar16[1] = '\0'" (subscript_expression "pcVar16[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "BIO_puts(*(BIO **)local_d8,pcVar15);" (call_expression "BIO_puts(*(BIO **)local_d8,pcVar15)" identifier (argument_list "(*(BIO **)local_d8,pcVar15)" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier ))) ;) (expression_statement "iVar5 = pAVar7->type;" (assignment_expression "iVar5 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) (if_statement "if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" if (parenthesized_expression "(iVar5 == 0x13)" ( (binary_expression "iVar5 == 0x13" identifier == number_literal) )) (compound_statement "{\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }" { (expression_statement "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");" (call_expression "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'")" identifier (argument_list "(*(BIO **)local_d8,"PRINTABLE:\'")" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""PRINTABLE:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" else (compound_statement "{\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" { (expression_statement "pBVar3 = *(BIO **)local_d8;" (assignment_expression "pBVar3 = *(BIO **)local_d8" identifier = (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" if (parenthesized_expression "(iVar5 == 0x14)" ( (binary_expression "iVar5 == 0x14" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar3,"T61STRING:\'");" (call_expression "BIO_printf(pBVar3,"T61STRING:\'")" identifier (argument_list "(pBVar3,"T61STRING:\'")" ( identifier , (string_literal ""T61STRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" else (if_statement "if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" if (parenthesized_expression "(iVar5 == 0x16)" ( (binary_expression "iVar5 == 0x16" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar3,"IA5STRING:\'");" (call_expression "BIO_printf(pBVar3,"IA5STRING:\'")" identifier (argument_list "(pBVar3,"IA5STRING:\'")" ( identifier , (string_literal ""IA5STRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" else (if_statement "if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" if (parenthesized_expression "(iVar5 == 0x1c)" ( (binary_expression "iVar5 == 0x1c" identifier == number_literal) )) (compound_statement "{\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }" { (expression_statement "BIO_printf(pBVar3,"UNIVERSALSTRING:\'");" (call_expression "BIO_printf(pBVar3,"UNIVERSALSTRING:\'")" identifier (argument_list "(pBVar3,"UNIVERSALSTRING:\'")" ( identifier , (string_literal ""UNIVERSALSTRING:\'"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" else (compound_statement "{\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" { (expression_statement "BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);" (call_expression "BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5)" identifier (argument_list "(pBVar3,"ASN.1 %2d:\'",iVar5)" ( identifier , (string_literal ""ASN.1 %2d:\'"" " string_content escape_sequence ") , identifier ))) ;) }))))))) }))) (expression_statement "local_d4 = "^%c";" (assignment_expression "local_d4 = "^%c"" identifier = (string_literal ""^%c"" " string_content ")) ;) (expression_statement "puVar22 = pAVar7->data;" (assignment_expression "puVar22 = pAVar7->data" identifier = (field_expression "pAVar7->data" identifier -> field_identifier)) ;) (expression_statement "local_d0 = "\\0x%02X";" (assignment_expression "local_d0 = "\\0x%02X"" identifier = (string_literal ""\\0x%02X"" " escape_sequence string_content ")) ;) (expression_statement "puVar19 = puVar22 + pAVar7->length;" (assignment_expression "puVar19 = puVar22 + pAVar7->length" identifier = (binary_expression "puVar22 + pAVar7->length" identifier + (field_expression "pAVar7->length" identifier -> field_identifier))) ;) (if_statement "if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }" if (parenthesized_expression "(0 < pAVar7->length)" ( (binary_expression "0 < pAVar7->length" number_literal < (field_expression "pAVar7->length" identifier -> field_identifier)) )) (compound_statement "{\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }" { (do_statement "do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);" do (compound_statement "{\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              }" { (while_statement "while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }" { (expression_statement "uVar1 = *puVar22;" (assignment_expression "uVar1 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "local_e0 = (X509 *)(int)(char)uVar1;" (assignment_expression "local_e0 = (X509 *)(int)(char)uVar1" identifier = (cast_expression "(X509 *)(int)(char)uVar1" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)uVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (expression_statement "pBVar3 = *(BIO **)local_d8;" (assignment_expression "pBVar3 = *(BIO **)local_d8" identifier = (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (0x5e < (byte)(uVar1 - 0x20)) break;" if (parenthesized_expression "(0x5e < (byte)(uVar1 - 0x20))" ( (binary_expression "0x5e < (byte)(uVar1 - 0x20)" number_literal < (call_expression "(byte)(uVar1 - 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar1 - 0x20)" ( (binary_expression "uVar1 - 0x20" identifier - number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "BIO_printf(pBVar3,"%c",local_e0);" (call_expression "BIO_printf(pBVar3,"%c",local_e0)" identifier (argument_list "(pBVar3,"%c",local_e0)" ( identifier , (string_literal ""%c"" " string_content ") , identifier ))) ;) (if_statement "if (puVar22 == puVar19) goto LAB_0002df49;" if (parenthesized_expression "(puVar22 == puVar19)" ( (binary_expression "puVar22 == puVar19" identifier == identifier) )) (goto_statement "goto LAB_0002df49;" goto statement_identifier ;)) })) (if_statement "if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" if (parenthesized_expression "((char)uVar1 < '\0')" ( (binary_expression "(char)uVar1 < '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }" { (expression_statement "BIO_printf(pBVar3,local_d0,local_e0);" (call_expression "BIO_printf(pBVar3,local_d0,local_e0)" identifier (argument_list "(pBVar3,local_d0,local_e0)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" else (compound_statement "{\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" { (expression_statement "BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));" (call_expression "BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" identifier (argument_list "(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" ( identifier , identifier , (cast_expression "(X509_NAME_ENTRY *)((int)local_e0 + 0x40)" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_e0 + 0x40)" ( (binary_expression "(int)local_e0 + 0x40" (cast_expression "(int)local_e0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))) ;) }))) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar22 != puVar19)" ( (binary_expression "puVar22 != puVar19" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");" statement_identifier : (expression_statement "BIO_printf(*(BIO **)local_d8,"\'\n");" (call_expression "BIO_printf(*(BIO **)local_d8,"\'\n")" identifier (argument_list "(*(BIO **)local_d8,"\'\n")" ( (pointer_expression "*(BIO **)local_d8" * (cast_expression "(BIO **)local_d8" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""\'\n"" " escape_sequence escape_sequence ") ))) ;)) }))) (goto_statement "goto LAB_0002dd2b;" goto statement_identifier ;) })))) (expression_statement "pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";" (assignment_expression "pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n"" identifier = (string_literal ""\nThe string contains characters that are illegal for the ASN.1 type\n"" " escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);" statement_identifier : (expression_statement "BIO_printf(DAT_000c458c,pcVar15);" (call_expression "BIO_printf(DAT_000c458c,pcVar15)" identifier (argument_list "(DAT_000c458c,pcVar15)" ( identifier , identifier ))) ;)) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002de05;" goto statement_identifier ;) })) (if_statement "if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" if (parenthesized_expression "((iVar5 != 0x30) || (param_13 != 0))" ( (binary_expression "(iVar5 != 0x30) || (param_13 != 0)" (parenthesized_expression "(iVar5 != 0x30)" ( (binary_expression "iVar5 != 0x30" identifier != number_literal) )) || (parenthesized_expression "(param_13 != 0)" ( (binary_expression "param_13 != 0" identifier != number_literal) ))) )) (compound_statement "{\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" { (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" identifier = (field_expression "pAVar7->type" identifier -> field_identifier)) ;) (if_statement "if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" if (parenthesized_expression "(iVar5 != 0x30)" ( (binary_expression "iVar5 != 0x30" identifier != number_literal) )) (compound_statement "{\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" { (labeled_statement "LAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;" statement_identifier : (if_statement "if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;" if (parenthesized_expression "((iVar18 != 0x1e) && (iVar18 != 0xc))" ( (binary_expression "(iVar18 != 0x1e) && (iVar18 != 0xc)" (parenthesized_expression "(iVar18 != 0x1e)" ( (binary_expression "iVar18 != 0x1e" identifier != number_literal) )) && (parenthesized_expression "(iVar18 != 0xc)" ( (binary_expression "iVar18 != 0xc" identifier != number_literal) ))) )) (goto_statement "goto LAB_0002ddaf;" goto statement_identifier ;))) (goto_statement "goto LAB_0002dd1c;" goto statement_identifier ;) })) (if_statement "if (iVar18 == 0x16) goto LAB_0002ddaf;" if (parenthesized_expression "(iVar18 == 0x16)" ( (binary_expression "iVar18 == 0x16" identifier == number_literal) )) (goto_statement "goto LAB_0002ddaf;" goto statement_identifier ;)) (labeled_statement "LAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";" statement_identifier : (expression_statement "pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";" (assignment_expression "pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n"" identifier = (string_literal ""\nemailAddress type needs to be of type IA5STRING\n"" " escape_sequence string_content escape_sequence ")) ;)) (goto_statement "goto LAB_0002dde4;" goto statement_identifier ;) })) (labeled_statement "LAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" statement_identifier : (expression_statement "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" (assignment_expression "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1)" identifier = (cast_expression "(EVP_PKEY *)((int)&local_e4->type + 1)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_e4->type + 1)" ( (binary_expression "(int)&local_e4->type + 1" (cast_expression "(int)&local_e4->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_e4->type" & (field_expression "local_e4->type" identifier -> field_identifier))) + number_literal) )))) ;)) })) (expression_statement "local_b8 = X509_NAME_new();" (assignment_expression "local_b8 = X509_NAME_new()" identifier = (call_expression "X509_NAME_new()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" if (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" ( (binary_expression "local_b8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }" { (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n");" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n")" identifier (argument_list "(DAT_000c458c,"Memory allocation failure\n")" ( identifier , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") ))) ;) (labeled_statement "LAB_0002de05:\n      local_e0 = (X509 *)0x0;" statement_identifier : (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" else (compound_statement "{\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" { (if_statement "if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" if (parenthesized_expression "(param_26 == (X509 *)0x0)" ( (binary_expression "param_26 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }" { (expression_statement "pXVar4 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar4 = X509_get_subject_name(local_ac)" identifier = (call_expression "X509_get_subject_name(local_ac)" identifier (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "local_d8 = X509_NAME_dup(pXVar4);" (assignment_expression "local_d8 = X509_NAME_dup(pXVar4)" identifier = (call_expression "X509_NAME_dup(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier )))) ;) }) (else_clause "else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" else (compound_statement "{\n        local_d8 = X509_NAME_dup(local_dc);\n      }" { (expression_statement "local_d8 = X509_NAME_dup(local_dc);" (assignment_expression "local_d8 = X509_NAME_dup(local_dc)" identifier = (call_expression "X509_NAME_dup(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) ;) }))) (if_statement "if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" if (parenthesized_expression "(local_d8 == (X509_NAME *)0x0)" ( (binary_expression "local_d8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" { (labeled_statement "LAB_0002e2c6:\n        local_e0 = (X509 *)0x0;" statement_identifier : (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" else (compound_statement "{\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" { (expression_statement "local_c0 = (byte *)0x7e599;" (assignment_expression "local_c0 = (byte *)0x7e599" identifier = (cast_expression "(byte *)0x7e599" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d4 = (char *)0x0;" (assignment_expression "local_d4 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c4 = (ASN1_STRING *)0x0;" (assignment_expression "local_c4 = (ASN1_STRING *)0x0" identifier = (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c8 = (ASN1_STRING *)0x0;" (assignment_expression "local_c8 = (ASN1_STRING *)0x0" identifier = (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }" while (parenthesized_expression "(iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5)" ( (comma_expression "iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5" (assignment_expression "iVar5 = OPENSSL_sk_num(local_cc)" identifier = (call_expression "OPENSSL_sk_num(local_cc)" identifier (argument_list "(local_cc)" ( identifier )))) , (binary_expression "(int)local_d4 < iVar5" (cast_expression "(int)local_d4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) )) (compound_statement "{\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }" { (expression_statement "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);" (assignment_expression "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4)" identifier = (cast_expression "(char *)OPENSSL_sk_value(local_cc,local_d4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "OPENSSL_sk_value(local_cc,local_d4)" identifier (argument_list "(local_cc,local_d4)" ( identifier , identifier ))))) ;) (expression_statement "iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));" (assignment_expression "iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4))" identifier = (call_expression "OBJ_txt2nid(*(char **)(local_d0 + 4))" identifier (argument_list "(*(char **)(local_d0 + 4))" ( (pointer_expression "*(char **)(local_d0 + 4)" * (cast_expression "(char **)(local_d0 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" { (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = "%s:unknown object type in \'policy\' configuration\n";" (assignment_expression "pcVar15 = "%s:unknown object type in \'policy\' configuration\n"" identifier = (string_literal ""%s:unknown object type in \'policy\' configuration\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) (expression_statement "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);" (assignment_expression "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5)" identifier = (cast_expression "(EVP_PKEY *)OBJ_nid2obj(iVar5)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "OBJ_nid2obj(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))))) ;) (expression_statement "local_bc = (byte *)0x7e5a2;" (assignment_expression "local_bc = (byte *)0x7e5a2" identifier = (cast_expression "(byte *)0x7e5a2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar24 = (byte *)0xffffffff;" (assignment_expression "pbVar24 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" statement_identifier : (expression_statement "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" (assignment_expression "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" identifier = (cast_expression "(byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" identifier (argument_list "(local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" ( identifier , (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)pbVar24" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;)) (if_statement "if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" if (parenthesized_expression "(-1 < (int)pbVar10)" ( (binary_expression "-1 < (int)pbVar10" number_literal < (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" { (expression_statement "uVar27 = auStack_ec < (undefined1 *)0x8;" (assignment_expression "uVar27 = auStack_ec < (undefined1 *)0x8" identifier = (binary_expression "auStack_ec < (undefined1 *)0x8" identifier < (cast_expression "(undefined1 *)0x8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar30 = &stack0x00000000 == (undefined1 *)0xf4;" (assignment_expression "uVar30 = &stack0x00000000 == (undefined1 *)0xf4" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0xf4" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0xf4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10)" identifier = (call_expression "X509_NAME_get_entry(local_dc,(int)pbVar10)" identifier (argument_list "(local_dc,(int)pbVar10)" ( identifier , (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" identifier = (pointer_expression "*(byte **)(local_d0 + 8)" * (cast_expression "(byte **)(local_d0 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 8)" ( (binary_expression "local_d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar26 = local_c0;" (assignment_expression "pbVar26 = local_c0" identifier = identifier) ;) (do_statement "do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);" do (compound_statement "{\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar27 = *pbVar24 < *pbVar26;" (assignment_expression "uVar27 = *pbVar24 < *pbVar26" identifier = (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "uVar30 = *pbVar24 == *pbVar26;" (assignment_expression "uVar30 = *pbVar24 == *pbVar26" identifier = (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar26 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar30)" ( (cast_expression "(bool)uVar30" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (expression_statement "bVar28 = false;" (assignment_expression "bVar28 = false" identifier = false) ;) (expression_statement "bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;" (assignment_expression "bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27" identifier = (binary_expression "(!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27" (parenthesized_expression "(!(bool)uVar27 && !(bool)uVar30)" ( (binary_expression "!(bool)uVar27 && !(bool)uVar30" (unary_expression "!(bool)uVar27" ! (cast_expression "(bool)uVar27" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar30" ! (cast_expression "(bool)uVar30" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar27" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "local_e0 = (X509 *)pXVar6;" (assignment_expression "local_e0 = (X509 *)pXVar6" identifier = (cast_expression "(X509 *)pXVar6" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar31) goto joined_r0x0002efd1;" if (parenthesized_expression "(bVar31)" ( identifier )) (goto_statement "goto joined_r0x0002efd1;" goto statement_identifier ;)) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar26 = local_bc;" (assignment_expression "pbVar26 = local_bc" identifier = identifier) ;) (do_statement "do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);" do (compound_statement "{\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            }" { (expression_statement "pbVar23 = pbVar24;" (assignment_expression "pbVar23 = pbVar24" identifier = identifier) ;) (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "bVar28 = *pbVar24 < *pbVar26;" (assignment_expression "bVar28 = *pbVar24 < *pbVar26" identifier = (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "bVar31 = *pbVar24 == *pbVar26;" (assignment_expression "bVar31 = *pbVar24 == *pbVar26" identifier = (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar26" * identifier))) ;) (expression_statement "pbVar24 = pbVar23;" (assignment_expression "pbVar24 = pbVar23" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar26 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar31)" ( identifier )) ;) (if_statement "if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" if (parenthesized_expression "((!bVar28 && !bVar31) == bVar28)" ( (binary_expression "(!bVar28 && !bVar31) == bVar28" (parenthesized_expression "(!bVar28 && !bVar31)" ( (binary_expression "!bVar28 && !bVar31" (unary_expression "!bVar28" ! identifier) && (unary_expression "!bVar31" ! identifier)) )) == identifier) )) (compound_statement "{\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" { (if_statement "if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;" if (parenthesized_expression "(pXVar6 != (X509_NAME_ENTRY *)0x0)" ( (binary_expression "pXVar6 != (X509_NAME_ENTRY *)0x0" identifier != (cast_expression "(X509_NAME_ENTRY *)0x0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e1ad;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e236;" goto statement_identifier ;) })) (expression_statement "local_80 = pbVar21;" (assignment_expression "local_80 = pbVar21" identifier = identifier) ;) (expression_statement "iVar5 = strcmp((char *)pbVar21,"match");" (assignment_expression "iVar5 = strcmp((char *)pbVar21,"match")" identifier = (call_expression "strcmp((char *)pbVar21,"match")" identifier (argument_list "((char *)pbVar21,"match")" ( (cast_expression "(char *)pbVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""match"" " string_content ") )))) ;) (expression_statement "pbVar21 = local_80;" (assignment_expression "pbVar21 = local_80" identifier = identifier) ;) (if_statement "if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" { (if_statement "if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }" if (parenthesized_expression "(local_e0 != (X509 *)0x0)" ( (binary_expression "local_e0 != (X509 *)0x0" identifier != (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }" { (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) (expression_statement "local_80 = pbVar10;" (assignment_expression "local_80 = pbVar10" identifier = identifier) ;) (do_statement "do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);" do (compound_statement "{\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                }" { (expression_statement "pEVar13 = local_e4;" (assignment_expression "pEVar13 = local_e4" identifier = identifier) ;) (expression_statement "iVar18 = iVar5;" (assignment_expression "iVar18 = iVar5" identifier = identifier) ;) (expression_statement "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);" (assignment_expression "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" identifier = (call_expression "X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" identifier (argument_list "(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" ( identifier , (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" if (parenthesized_expression "((loc < 0) && (iVar5 == -1))" ( (binary_expression "(loc < 0) && (iVar5 == -1)" (parenthesized_expression "(loc < 0)" ( (binary_expression "loc < 0" identifier < number_literal) )) && (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) ))) )) (compound_statement "{\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" { (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;" (assignment_expression "pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" identifier = (string_literal ""The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) (if_statement "if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" if (parenthesized_expression "(loc < 0)" ( (binary_expression "loc < 0" identifier < number_literal) )) (compound_statement "{\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" { (expression_statement "puVar19 = "NULL";" (assignment_expression "puVar19 = "NULL"" identifier = (string_literal ""NULL"" " string_content ")) ;) (if_statement "if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }" if (parenthesized_expression "(local_c8 != (ASN1_STRING *)0x0)" ( (binary_expression "local_c8 != (ASN1_STRING *)0x0" identifier != (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      puVar19 = local_c8->data;\n                    }" { (expression_statement "puVar19 = local_c8->data;" (assignment_expression "puVar19 = local_c8->data" identifier = (field_expression "local_c8->data" identifier -> field_identifier)) ;) })) (expression_statement "puVar22 = "NULL";" (assignment_expression "puVar22 = "NULL"" identifier = (string_literal ""NULL"" " string_content ")) ;) (if_statement "if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }" if (parenthesized_expression "(local_c4 != (ASN1_STRING *)0x0)" ( (binary_expression "local_c4 != (ASN1_STRING *)0x0" identifier != (cast_expression "(ASN1_STRING *)0x0" ( (type_descriptor "ASN1_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      puVar22 = local_c4->data;\n                    }" { (expression_statement "puVar22 = local_c4->data;" (assignment_expression "puVar22 = local_c4->data" identifier = (field_expression "local_c4->data" identifier -> field_identifier)) ;) })) (expression_statement "BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );" (call_expression "BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              )" identifier (argument_list "(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              )" ( identifier , (string_literal ""The %s field is different between\nCA certificate (%s) and the request (%s)\n"" " string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(local_d0 + 4)" * (cast_expression "(undefined4 *)(local_d0 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;) })) (expression_statement "pXVar6 = X509_NAME_get_entry(local_d8,loc);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_d8,loc)" identifier = (call_expression "X509_NAME_get_entry(local_d8,loc)" identifier (argument_list "(local_d8,loc)" ( identifier , identifier )))) ;) (expression_statement "pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);" (assignment_expression "pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" identifier = (call_expression "X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" identifier (argument_list "((X509_NAME_ENTRY *)local_e0)" ( (cast_expression "(X509_NAME_ENTRY *)local_e0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "local_c8 = pAVar7;" (assignment_expression "local_c8 = pAVar7" identifier = identifier) ;) (expression_statement "local_c4 = X509_NAME_ENTRY_get_data(pXVar6);" (assignment_expression "local_c4 = X509_NAME_ENTRY_get_data(pXVar6)" identifier = (call_expression "X509_NAME_ENTRY_get_data(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier )))) ;) (expression_statement "iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);" (assignment_expression "iVar18 = ASN1_STRING_cmp(pAVar7,local_c4)" identifier = (call_expression "ASN1_STRING_cmp(pAVar7,local_c4)" identifier (argument_list "(pAVar7,local_c4)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = loc;" (assignment_expression "iVar5 = loc" identifier = identifier) ;) (expression_statement "pbVar10 = local_80;" (assignment_expression "pbVar10 = local_80" identifier = identifier) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (goto_statement "goto joined_r0x0002efd1;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e2a5;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e921;" goto statement_identifier ;) })) (expression_statement "bVar28 = pbVar24 != (byte *)0xffffffff;" (assignment_expression "bVar28 = pbVar24 != (byte *)0xffffffff" identifier = (binary_expression "pbVar24 != (byte *)0xffffffff" identifier != (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar31 = pbVar24 == (byte *)0xffffffff;" (assignment_expression "bVar31 = pbVar24 == (byte *)0xffffffff" identifier = (binary_expression "pbVar24 == (byte *)0xffffffff" identifier == (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" if (parenthesized_expression "(bVar31)" ( identifier )) (compound_statement "{\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" { (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" identifier = (pointer_expression "*(byte **)(local_d0 + 8)" * (cast_expression "(byte **)(local_d0 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 8)" ( (binary_expression "local_d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = local_c0;" (assignment_expression "pbVar10 = local_c0" identifier = identifier) ;) (do_statement "do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);" do (compound_statement "{\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar28 = *pbVar24 < *pbVar10;" (assignment_expression "bVar28 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar31 = *pbVar24 == *pbVar10;" (assignment_expression "bVar31 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar31)" ( identifier )) ;) (expression_statement "bVar29 = false;" (assignment_expression "bVar29 = false" identifier = false) ;) (expression_statement "bVar28 = (!bVar28 && !bVar31) == bVar28;" (assignment_expression "bVar28 = (!bVar28 && !bVar31) == bVar28" identifier = (binary_expression "(!bVar28 && !bVar31) == bVar28" (parenthesized_expression "(!bVar28 && !bVar31)" ( (binary_expression "!bVar28 && !bVar31" (unary_expression "!bVar28" ! identifier) && (unary_expression "!bVar31" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" if (parenthesized_expression "(!bVar28)" ( (unary_expression "!bVar28" ! identifier) )) (compound_statement "{\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" { (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"supplied";" (assignment_expression "pbVar10 = (byte *)"supplied"" identifier = (cast_expression "(byte *)"supplied"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""supplied"" " string_content "))) ;) (goto_statement "goto code_r0x0002e27e;" goto statement_identifier ;) })) })) (expression_statement "local_d4 = local_d4 + 1;" (assignment_expression "local_d4 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) })) (if_statement "if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" if (parenthesized_expression "(DAT_000c44ec != 0)" ( (binary_expression "DAT_000c44ec != 0" identifier != number_literal) )) (compound_statement "{\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" { (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = X509_NAME_dup(local_dc);" (assignment_expression "local_b8 = X509_NAME_dup(local_dc)" identifier = (call_expression "X509_NAME_dup(local_dc)" identifier (argument_list "(local_dc)" ( identifier )))) ;) (if_statement "if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;" if (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" ( (binary_expression "local_b8 == (X509_NAME *)0x0" identifier == (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;)) })) (if_statement "if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" if (parenthesized_expression "(param_18 != 0)" ( (binary_expression "param_18 != 0" identifier != number_literal) )) (compound_statement "{\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" { (expression_statement "BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");" (call_expression "BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n")" identifier (argument_list "(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n")" ( identifier , (string_literal ""Everything appears to be ok, creating and signing the certificate\n"" " string_content escape_sequence ") ))) ;) })) (expression_statement "pXVar11 = X509_new();" (assignment_expression "pXVar11 = X509_new()" identifier = (call_expression "X509_new()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_e0 = pXVar11;" (assignment_expression "local_e0 = pXVar11" identifier = identifier) ;) (if_statement "if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;" if (parenthesized_expression "(pXVar11 == (X509 *)0x0)" ( (binary_expression "pXVar11 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) (expression_statement "pAVar25 = X509_get_serialNumber(pXVar11);" (assignment_expression "pAVar25 = X509_get_serialNumber(pXVar11)" identifier = (call_expression "X509_get_serialNumber(pXVar11)" identifier (argument_list "(pXVar11)" ( identifier )))) ;) (expression_statement "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);" (assignment_expression "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25)" identifier = (call_expression "BN_to_ASN1_INTEGER(local_a0,pAVar25)" identifier (argument_list "(local_a0,pAVar25)" ( identifier , identifier )))) ;) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" if (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" identifier != (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" { (if_statement "if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" if (parenthesized_expression "(param_26 == (X509 *)0x0)" ( (binary_expression "param_26 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }" { (expression_statement "pXVar4 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar4 = X509_get_subject_name(local_ac)" identifier = (call_expression "X509_get_subject_name(local_ac)" identifier (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "iVar5 = X509_set_issuer_name(local_e0,pXVar4);" (assignment_expression "iVar5 = X509_set_issuer_name(local_e0,pXVar4)" identifier = (call_expression "X509_set_issuer_name(local_e0,pXVar4)" identifier (argument_list "(local_e0,pXVar4)" ( identifier , identifier )))) ;) }) (else_clause "else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" else (compound_statement "{\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" { (expression_statement "iVar5 = X509_set_issuer_name(pXVar11,local_b8);" (assignment_expression "iVar5 = X509_set_issuer_name(pXVar11,local_b8)" identifier = (call_expression "X509_set_issuer_name(pXVar11,local_b8)" identifier (argument_list "(pXVar11,local_b8)" ( identifier , identifier )))) ;) }))) (if_statement "if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" if (parenthesized_expression "((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0))" ( (binary_expression "(iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)" ( (comma_expression "pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0" (assignment_expression "pXVar11 = param_16" identifier = identifier) , (comma_expression "iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0" (assignment_expression "iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16)" identifier = (call_expression "FUN_00077500(local_e0,local_88,local_98,param_16)" identifier (argument_list "(local_e0,local_88,local_98,param_16)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" { (if_statement "if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }" if (parenthesized_expression "(local_98 != 0)" ( (binary_expression "local_98 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }" { (expression_statement "uVar12 = X509_get0_notAfter(local_e0);" (assignment_expression "uVar12 = X509_get0_notAfter(local_e0)" identifier = (call_expression "X509_get0_notAfter(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;) (expression_statement "iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);" (assignment_expression "iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12)" identifier = (call_expression "ASN1_TIME_diff(&local_70,0,0,uVar12)" identifier (argument_list "(&local_70,0,0,uVar12)" ( (pointer_expression "&local_70" & identifier) , number_literal , number_literal , identifier )))) ;) (expression_statement "param_16 = (X509 *)local_70.flags;" (assignment_expression "param_16 = (X509 *)local_70.flags" identifier = (cast_expression "(X509 *)local_70.flags" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_70.flags" identifier . field_identifier))) ;) (if_statement "if (iVar5 == 0) goto LAB_0002e84a;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) })) (expression_statement "x = local_e0;" (assignment_expression "x = local_e0" identifier = identifier) ;) (expression_statement "iVar5 = X509_set_subject_name(local_e0,local_b8);" (assignment_expression "iVar5 = X509_set_subject_name(local_e0,local_b8)" identifier = (call_expression "X509_set_subject_name(local_e0,local_b8)" identifier (argument_list "(local_e0,local_b8)" ( identifier , identifier )))) ;) (expression_statement "ctx = local_b4;" (assignment_expression "ctx = local_b4" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" { (expression_statement "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);" (assignment_expression "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" identifier = (cast_expression "(EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_REQ_get0_pubkey(local_b4)" identifier (argument_list "(local_b4)" ( identifier ))))) ;) (expression_statement "iVar5 = X509_set_pubkey(x,pEVar13);" (assignment_expression "iVar5 = X509_set_pubkey(x,pEVar13)" identifier = (call_expression "X509_set_pubkey(x,pEVar13)" identifier (argument_list "(x,pEVar13)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" { (if_statement "if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }" if (parenthesized_expression "(local_a8 != (char *)0x0)" ( (binary_expression "local_a8 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }" { (if_statement "if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" if (parenthesized_expression "(param_26 == (X509 *)0x0)" ( (binary_expression "param_26 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }" { (expression_statement "X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);" (call_expression "X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0)" identifier (argument_list "(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0)" ( (pointer_expression "&local_70" & identifier) , identifier , identifier , (cast_expression "(X509_REQ *)local_b4" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_CRL *)0x0" ( (type_descriptor "X509_CRL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) }) (else_clause "else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" else (compound_statement "{\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" { (expression_statement "X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);" (call_expression "X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" identifier (argument_list "(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" ( (pointer_expression "&local_70" & identifier) , identifier , identifier , (cast_expression "(X509_REQ *)ctx" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(X509_CRL *)0x0" ( (type_descriptor "X509_CRL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) }))) (expression_statement "conf = local_84;" (assignment_expression "conf = local_84" identifier = identifier) ;) (expression_statement "ctx = &local_70;" (assignment_expression "ctx = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (if_statement "if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" if (parenthesized_expression "(DAT_000c44f0 == (CONF *)0x0)" ( (binary_expression "DAT_000c44f0 == (CONF *)0x0" identifier == (cast_expression "(CONF *)0x0" ( (type_descriptor "CONF *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }" { (expression_statement "X509V3_set_nconf(ctx,local_84);" (call_expression "X509V3_set_nconf(ctx,local_84)" identifier (argument_list "(ctx,local_84)" ( identifier , identifier ))) ;) (expression_statement "pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);" (assignment_expression "pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" identifier = (cast_expression "(X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" identifier (argument_list "(conf,ctx,local_a8,local_e0)" ( identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }" if (parenthesized_expression "(pXVar20 == (X509 *)0x0)" ( (binary_expression "pXVar20 == (X509 *)0x0" identifier == (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }" { (expression_statement "BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);" (call_expression "BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04)" identifier (argument_list "(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04)" ( identifier , (string_literal ""ERROR: adding extensions in section %s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" identifier (argument_list "(DAT_000c458c)" ( identifier ))) ;) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;) })) (expression_statement "pXVar11 = x;" (assignment_expression "pXVar11 = x" identifier = identifier) ;) (if_statement "if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }" if (parenthesized_expression "(param_18 != 0)" ( (binary_expression "param_18 != 0" identifier != number_literal) )) (compound_statement "{\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }" { (expression_statement "BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);" (call_expression "BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20)" identifier (argument_list "(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20)" ( identifier , (string_literal ""Successfully added extensions from config\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pXVar11 = pXVar20;" (assignment_expression "pXVar11 = pXVar20" identifier = identifier) ;) })) }) (else_clause "else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" else (if_statement "if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" if (parenthesized_expression "(param_18 == 0)" ( (binary_expression "param_18 == 0" identifier == number_literal) )) (compound_statement "{\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }" { (expression_statement "X509V3_set_nconf(ctx,DAT_000c44f0);" (call_expression "X509V3_set_nconf(ctx,DAT_000c44f0)" identifier (argument_list "(ctx,DAT_000c44f0)" ( identifier , identifier ))) ;) (expression_statement "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);" (assignment_expression "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier = (call_expression "X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier (argument_list "(DAT_000c44f0,ctx,local_a8,local_e0)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);" statement_identifier : (expression_statement "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);" (call_expression "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5)" identifier (argument_list "((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5)" ( (cast_expression "(BIO *)((ASN1_OBJECT *)local_e4)->sn" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((ASN1_OBJECT *)local_e4)->sn" (parenthesized_expression "((ASN1_OBJECT *)local_e4)" ( (cast_expression "(ASN1_OBJECT *)local_e4" ( (type_descriptor "ASN1_OBJECT *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) , (string_literal ""ERROR: adding extensions in section %s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;)) (expression_statement "ERR_print_errors((BIO *)local_e4->type);" (call_expression "ERR_print_errors((BIO *)local_e4->type)" identifier (argument_list "((BIO *)local_e4->type)" ( (cast_expression "(BIO *)local_e4->type" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e4->type" identifier -> field_identifier)) ))) ;) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;) })) }) (else_clause "else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" else (compound_statement "{\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);" (call_expression "BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0)" identifier (argument_list "(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0)" ( identifier , (string_literal ""Extra configuration file found\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "X509V3_set_nconf(ctx,DAT_000c44f0);" (call_expression "X509V3_set_nconf(ctx,DAT_000c44f0)" identifier (argument_list "(ctx,DAT_000c44f0)" ( identifier , identifier ))) ;) (expression_statement "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);" (assignment_expression "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier = (call_expression "X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" identifier (argument_list "(DAT_000c44f0,ctx,local_a8,local_e0)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0002e824;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e824;" goto statement_identifier ;)) (expression_statement "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);" (call_expression "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26)" identifier (argument_list "((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26)" ( (cast_expression "(BIO *)local_e4->type" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_e4->type" identifier -> field_identifier)) , (string_literal ""Successfully added extensions from file.\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pXVar11 = param_26;" (assignment_expression "pXVar11 = param_26" identifier = identifier) ;) }))))) })) (expression_statement "iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);" (assignment_expression "iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11)" identifier = (call_expression "FUN_00073a40(local_e0,local_b4,param_25,pXVar11)" identifier (argument_list "(local_e0,local_b4,param_25,pXVar11)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" { (expression_statement "BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");" (call_expression "BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n")" identifier (argument_list "(DAT_000c458c,"ERROR: adding extensions from request\n")" ( identifier , (string_literal ""ERROR: adding extensions from request\n"" " string_content escape_sequence ") ))) ;) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" identifier (argument_list "(DAT_000c458c)" ( identifier ))) ;) (labeled_statement "LAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;" statement_identifier : (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (expression_statement "iVar5 = X509_get0_extensions(local_e0);" (assignment_expression "iVar5 = X509_get0_extensions(local_e0)" identifier = (call_expression "X509_get0_extensions(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;) (if_statement "if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;" if (parenthesized_expression "(((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0))" ( (binary_expression "((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)" (parenthesized_expression "((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5))" ( (binary_expression "(iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)" ( (comma_expression "iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5" (assignment_expression "iVar5 = OPENSSL_sk_num(iVar5)" identifier = (call_expression "OPENSSL_sk_num(iVar5)" identifier (argument_list "(iVar5)" ( identifier )))) , (binary_expression "0 < iVar5" number_literal < identifier)) ))) )) && (parenthesized_expression "(iVar5 = X509_set_version(local_e0,2), iVar5 == 0)" ( (comma_expression "iVar5 = X509_set_version(local_e0,2), iVar5 == 0" (assignment_expression "iVar5 = X509_set_version(local_e0,2)" identifier = (call_expression "X509_set_version(local_e0,2)" identifier (argument_list "(local_e0,2)" ( identifier , number_literal )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_0002e84a;" goto statement_identifier ;)) (if_statement "if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }" if (parenthesized_expression "(param_18 != 0)" ( (binary_expression "param_18 != 0" identifier != number_literal) )) (compound_statement "{\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }" { (expression_statement "BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);" (call_expression "BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18)" identifier (argument_list "(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18)" ( identifier , (string_literal ""The subject name appears to be ok, checking data base for clashes\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) })) (if_statement "if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" if (parenthesized_expression "(param_13 == 0)" ( (binary_expression "param_13 == 0" identifier == number_literal) )) (compound_statement "{\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }" { (expression_statement "ctx = (X509V3_CTX *)0xffffffff;" (assignment_expression "ctx = (X509V3_CTX *)0xffffffff" identifier = (cast_expression "(X509V3_CTX *)0xffffffff" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pXVar4 = X509_NAME_dup(local_b8);" (assignment_expression "pXVar4 = X509_NAME_dup(local_b8)" identifier = (call_expression "X509_NAME_dup(local_b8)" identifier (argument_list "(local_b8)" ( identifier )))) ;) (if_statement "if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }" if (parenthesized_expression "(pXVar4 != (X509_NAME *)0x0)" ( (binary_expression "pXVar4 != (X509_NAME *)0x0" identifier != (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }" { (while_statement "while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }" while (parenthesized_expression "(iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5)" ( (comma_expression "iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5" (assignment_expression "iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx)" identifier = (call_expression "X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx)" identifier (argument_list "(pXVar4,0x30,(int)ctx)" ( identifier , number_literal , (cast_expression "(int)ctx" ( (type_descriptor "int" primitive_type) ) identifier) )))) , (binary_expression "-1 < iVar5" number_literal < identifier)) )) (compound_statement "{\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }" { (expression_statement "ctx = (X509V3_CTX *)(iVar5 + -1);" (assignment_expression "ctx = (X509V3_CTX *)(iVar5 + -1)" identifier = (cast_expression "(X509V3_CTX *)(iVar5 + -1)" ( (type_descriptor "X509V3_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -1)" ( (binary_expression "iVar5 + -1" identifier + number_literal) )))) ;) (expression_statement "pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);" (assignment_expression "pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5)" identifier = (call_expression "X509_NAME_delete_entry(pXVar4,iVar5)" identifier (argument_list "(pXVar4,iVar5)" ( identifier , identifier )))) ;) (expression_statement "X509_NAME_ENTRY_free(pXVar6);" (call_expression "X509_NAME_ENTRY_free(pXVar6)" identifier (argument_list "(pXVar6)" ( identifier ))) ;) })) (expression_statement "iVar5 = X509_set_subject_name(local_e0,pXVar4);" (assignment_expression "iVar5 = X509_set_subject_name(local_e0,pXVar4)" identifier = (call_expression "X509_set_subject_name(local_e0,pXVar4)" identifier (argument_list "(local_e0,pXVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }" { (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier ))) ;) (goto_statement "goto LAB_0002e94f;" goto statement_identifier ;) })) (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier ))) ;) (goto_statement "goto LAB_0002e636;" goto statement_identifier ;) })) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" else (compound_statement "{\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" { (labeled_statement "LAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);" statement_identifier : (expression_statement "pXVar4 = X509_get_subject_name(local_e0);" (assignment_expression "pXVar4 = X509_get_subject_name(local_e0)" identifier = (call_expression "X509_get_subject_name(local_e0)" identifier (argument_list "(local_e0)" ( identifier )))) ;)) (expression_statement "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0)" identifier = (cast_expression "(ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_NAME_oneline(pXVar4,(char *)0x0,0)" identifier (argument_list "(pXVar4,(char *)0x0,0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))))) ;) (expression_statement "local_40 = pAVar25;" (assignment_expression "local_40 = pAVar25" identifier = identifier) ;) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" if (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" identifier != (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" { (expression_statement "iVar5 = BN_is_zero(local_a0);" (assignment_expression "iVar5 = BN_is_zero(local_a0)" identifier = (call_expression "BN_is_zero(local_a0)" identifier (argument_list "(local_a0)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0)" identifier = (cast_expression "(ASN1_INTEGER *)BN_bn2hex(local_a0)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "BN_bn2hex(local_a0)" identifier (argument_list "(local_a0)" ( identifier ))))) ;) }) (else_clause "else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" else (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" identifier = (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CRYPTO_strdup("00","../apps/ca.c",0x6c8)" identifier (argument_list "("00","../apps/ca.c",0x6c8)" ( (string_literal ""00"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal ))))) ;) }))) (expression_statement "pcVar15 = "../apps/ca.c";" (assignment_expression "pcVar15 = "../apps/ca.c"" identifier = (string_literal ""../apps/ca.c"" " string_content ")) ;) (expression_statement "local_48 = pAVar25;" (assignment_expression "local_48 = pAVar25" identifier = identifier) ;) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" if (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" { (labeled_statement "LAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);" statement_identifier : (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25)" identifier (argument_list "(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25)" ( identifier , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;)) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (if_statement "if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" if (parenthesized_expression "((char)local_40->length == '\0')" ( (binary_expression "(char)local_40->length == '\0'" (cast_expression "(char)local_40->length" ( (type_descriptor "char" primitive_type) ) (field_expression "local_40->length" identifier -> field_identifier)) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" { (expression_statement "CRYPTO_free(local_40);" (call_expression "CRYPTO_free(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" identifier = (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" identifier (argument_list "((char *)local_48,"../apps/ca.c",0x6d7)" ( (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""../apps/ca.c"" " string_content ") , number_literal ))))) ;) (expression_statement "local_40 = pAVar25;" (assignment_expression "local_40 = pAVar25" identifier = identifier) ;) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;" if (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" ( (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002eab4;" goto statement_identifier ;)) })) (if_statement "if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" if (parenthesized_expression "((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0))" ( (binary_expression "(*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" (parenthesized_expression "(*local_8c == 0)" ( (binary_expression "*local_8c == 0" (pointer_expression "*local_8c" * identifier) == number_literal) )) || (parenthesized_expression "(ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" ( (comma_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0" (assignment_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54)" identifier = (call_expression "TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54)" identifier (argument_list "((TXT_DB *)*local_a4,5,&local_54)" ( (cast_expression "(TXT_DB *)*local_a4" ( (type_descriptor "TXT_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_a4" * identifier)) , number_literal , (pointer_expression "&local_54" & identifier) )))) , (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" identifier == (cast_expression "(OPENSSL_STRING *)0x0" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }" { (expression_statement "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);" (assignment_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54)" identifier = (call_expression "TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54)" identifier (argument_list "((TXT_DB *)*local_a4,3,&local_54)" ( (cast_expression "(TXT_DB *)*local_a4" ( (type_descriptor "TXT_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_a4" * identifier)) , number_literal , (pointer_expression "&local_54" & identifier) )))) ;) (if_statement "if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" if (parenthesized_expression "(ppcVar14 == (OPENSSL_STRING *)0x0)" ( (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" identifier == (cast_expression "(OPENSSL_STRING *)0x0" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" { (if_statement "if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" if (parenthesized_expression "(param_24 == 0)" ( (binary_expression "param_24 == 0" identifier == number_literal) )) (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );" (call_expression "BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    )" identifier (argument_list "(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    )" ( identifier , (string_literal ""Certificate Details:\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );" (assignment_expression "iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" identifier = (call_expression "X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" identifier (argument_list "(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , (binary_expression "param_22 | 0x208" identifier | number_literal) )))) ;) }) (else_clause "else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" else (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" { (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5)" identifier (argument_list "(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Certificate is to be certified until "" " string_content ") , identifier , identifier ))) ;) (expression_statement "a = (ASN1_TIME *)X509_get0_notAfter(local_e0);" (assignment_expression "a = (ASN1_TIME *)X509_get0_notAfter(local_e0)" identifier = (cast_expression "(ASN1_TIME *)X509_get0_notAfter(local_e0)" ( (type_descriptor "ASN1_TIME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_notAfter(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))))) ;) (expression_statement "iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);" (assignment_expression "iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a)" identifier = (call_expression "ASN1_TIME_print(*(BIO **)local_e4,a)" identifier (argument_list "(*(BIO **)local_e4,a)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier )))) ;) (if_statement "if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }" if (parenthesized_expression "(param_16 != (X509 *)0x0)" ( (binary_expression "param_16 != (X509 *)0x0" identifier != (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }" { (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" identifier (argument_list "(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal "" (%ld days)"" " string_content ") , identifier , identifier )))) ;) })) (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5)" identifier (argument_list "(*(BIO **)local_e4,"\n",iVar5,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""\n"" " escape_sequence ") , identifier , identifier )))) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" if (parenthesized_expression "(param_17 == 0)" ( (binary_expression "param_17 == 0" identifier == number_literal) )) (compound_statement "{\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }" { (expression_statement "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5)" identifier (argument_list "(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Sign the certificate? [y/n]:"" " string_content ") , identifier , identifier ))) ;) (expression_statement "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0)" identifier (argument_list "(*(BIO **)local_e4,0xb,0,(void *)0x0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "local_3c._3_1_ = 0;" (assignment_expression "local_3c._3_1_ = 0" (field_expression "local_3c._3_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);" (assignment_expression "pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" identifier = (call_expression "fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" identifier (argument_list "((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" ( (cast_expression "(char *)((int)&local_3c + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_3c + 3)" ( (binary_expression "(int)&local_3c + 3" (cast_expression "(int)&local_3c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_3c" & identifier)) + number_literal) ))) , number_literal , (pointer_expression "*(FILE **)PTR_stdin_000bdf94" * (cast_expression "(FILE **)PTR_stdin_000bdf94" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) )))) ;) (if_statement "if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" { (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" identifier (argument_list "(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n"" " string_content escape_sequence ") , number_literal , number_literal ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" else (compound_statement "{\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" { (expression_statement "uVar17 = local_3c._3_1_ & 0xffffffdf;" (assignment_expression "uVar17 = local_3c._3_1_ & 0xffffffdf" identifier = (binary_expression "local_3c._3_1_ & 0xffffffdf" (field_expression "local_3c._3_1_" identifier . field_identifier) & number_literal)) ;) (if_statement "if ((char)uVar17 == 'Y') goto LAB_0002ebcc;" if (parenthesized_expression "((char)uVar17 == 'Y')" ( (binary_expression "(char)uVar17 == 'Y'" (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'Y'" ' character ')) )) (goto_statement "goto LAB_0002ebcc;" goto statement_identifier ;)) (expression_statement "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);" (call_expression "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17)" identifier (argument_list "(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" identifier = (cast_expression "(EVP_PKEY *)0x0" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" else (compound_statement "{\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" { (labeled_statement "LAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;" statement_identifier : (expression_statement "local_dc = (X509_NAME *)local_e4;" (assignment_expression "local_dc = (X509_NAME *)local_e4" identifier = (cast_expression "(X509_NAME *)local_e4" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);" (assignment_expression "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0)" identifier = (cast_expression "(EVP_PKEY *)X509_get0_pubkey(local_e0)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_pubkey(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))))) ;) (expression_statement "iVar5 = EVP_PKEY_missing_parameters(local_e4);" (assignment_expression "iVar5 = EVP_PKEY_missing_parameters(local_e4)" identifier = (call_expression "EVP_PKEY_missing_parameters(local_e4)" identifier (argument_list "(local_e4)" ( identifier )))) ;) (if_statement "if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" if (parenthesized_expression "((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0))" ( (binary_expression "(iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)" ( (comma_expression "iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0" (assignment_expression "iVar5 = EVP_PKEY_missing_parameters(local_9c)" identifier = (call_expression "EVP_PKEY_missing_parameters(local_9c)" identifier (argument_list "(local_9c)" ( identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" { (expression_statement "EVP_PKEY_copy_parameters(local_e4,local_9c);" (call_expression "EVP_PKEY_copy_parameters(local_e4,local_9c)" identifier (argument_list "(local_e4,local_9c)" ( identifier , identifier ))) ;) })) (expression_statement "local_d4 = (char *)local_dc;" (assignment_expression "local_d4 = (char *)local_dc" identifier = (cast_expression "(char *)local_dc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);" (assignment_expression "uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90)" identifier = (call_expression "FUN_0004e150(local_e0,local_9c,local_94,local_90)" identifier (argument_list "(local_e0,local_9c,local_94,local_90)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);" (assignment_expression "uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar33 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar33 >> 0x20)" ( (binary_expression "(ulonglong)uVar33 >> 0x20" (cast_expression "(ulonglong)uVar33" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" if (parenthesized_expression "((int)uVar33 != 0)" ( (binary_expression "(int)uVar33 != 0" (cast_expression "(int)uVar33" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" { (expression_statement "uVar34 = 0x742;" (assignment_expression "uVar34 = 0x742" identifier = number_literal) ;) (expression_statement "local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);" (assignment_expression "local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742)" identifier = (call_expression "CRYPTO_strdup("V","../apps/ca.c",0x742)" identifier (argument_list "("V","../apps/ca.c",0x742)" ( (string_literal ""V"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal )))) ;) (expression_statement "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);" (assignment_expression "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" identifier = (cast_expression "(EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" identifier (argument_list "(local_e0,pcVar15,uVar34,uVar12)" ( identifier , identifier , identifier , identifier ))))) ;) (expression_statement "local_dc = *(X509_NAME **)local_e4;" (assignment_expression "local_dc = *(X509_NAME **)local_e4" identifier = (pointer_expression "*(X509_NAME **)local_e4" * (cast_expression "(X509_NAME **)local_e4" ( (type_descriptor "X509_NAME **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");" (assignment_expression "local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" identifier = (cast_expression "(void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" identifier (argument_list "((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" ( (cast_expression "(undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1)" ( (binary_expression "(int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1" (cast_expression "(int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((ASN1_INTEGER *)local_dc)->\n                                                                   length" & (field_expression "((ASN1_INTEGER *)local_dc)->\n                                                                   length" (parenthesized_expression "((ASN1_INTEGER *)local_dc)" ( (cast_expression "(ASN1_INTEGER *)local_dc" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) ))) , (string_literal ""row expdate"" " string_content ") ))))) ;) (expression_statement "memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);" (call_expression "memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" identifier (argument_list "(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" ( identifier , (pointer_expression "*(void **)((int)local_e4 + 8)" * (cast_expression "(void **)((int)local_e4 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_e4 + 8)" ( (binary_expression "(int)local_e4 + 8" (cast_expression "(int)local_e4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(size_t *)local_e4" * (cast_expression "(size_t *)local_e4" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "*(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;" (assignment_expression "*(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0" (pointer_expression "*(undefined1 *)((int)local_50 + *(size_t *)local_e4)" * (cast_expression "(undefined1 *)((int)local_50 + *(size_t *)local_e4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_50 + *(size_t *)local_e4)" ( (binary_expression "(int)local_50 + *(size_t *)local_e4" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(size_t *)local_e4" * (cast_expression "(size_t *)local_e4" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) = number_literal) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);" (assignment_expression "local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748)" identifier = (call_expression "CRYPTO_strdup("unknown","../apps/ca.c",0x748)" identifier (argument_list "("unknown","../apps/ca.c",0x748)" ( (string_literal ""unknown"" " string_content ") , (string_literal ""../apps/ca.c"" " string_content ") , number_literal )))) ;) (if_statement "if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" if (parenthesized_expression "((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0))" ( (binary_expression "(((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)" (parenthesized_expression "(((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0))" ( (binary_expression "((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)" (parenthesized_expression "((local_54 == (char *)0x0) || (local_50 == (void *)0x0))" ( (binary_expression "(local_54 == (char *)0x0) || (local_50 == (void *)0x0)" (parenthesized_expression "(local_54 == (char *)0x0)" ( (binary_expression "local_54 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_50 == (void *)0x0)" ( (binary_expression "local_50 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(local_44 == (char *)0x0)" ( (binary_expression "local_44 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(local_40 == (ASN1_INTEGER *)0x0)" ( (binary_expression "local_40 == (ASN1_INTEGER *)0x0" identifier == (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" { (expression_statement "BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);" (call_expression "BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44)" identifier (argument_list "(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44)" ( (pointer_expression "*(BIO **)local_d4" * (cast_expression "(BIO **)local_d4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" else (compound_statement "{\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" { (expression_statement "local_e4 = (EVP_PKEY *)local_d4;" (assignment_expression "local_e4 = (EVP_PKEY *)local_d4" identifier = (cast_expression "(EVP_PKEY *)local_d4" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44)" identifier = (cast_expression "(ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44)" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00073440(0x1c,"row space",local_44,local_44)" identifier (argument_list "(0x1c,"row space",local_44,local_44)" ( number_literal , (string_literal ""row space"" " string_content ") , identifier , identifier ))))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);" do (compound_statement "{\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              }" { (expression_statement "(&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];" (assignment_expression "(&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5]" (subscript_expression "(&pAVar25->length)[iVar5]" (parenthesized_expression "(&pAVar25->length)" ( (pointer_expression "&pAVar25->length" & (field_expression "pAVar25->length" identifier -> field_identifier)) )) [ identifier ]) = (cast_expression "(int)(&local_54)[iVar5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&local_54)[iVar5]" (parenthesized_expression "(&local_54)" ( (pointer_expression "&local_54" & identifier) )) [ identifier ]))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 6)" ( (binary_expression "iVar5 != 6" identifier != number_literal) )) ;) (expression_statement "pAVar25[1].data = (uchar *)0x0;" (assignment_expression "pAVar25[1].data = (uchar *)0x0" (field_expression "pAVar25[1].data" (subscript_expression "pAVar25[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);" (assignment_expression "iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" identifier = (call_expression "TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" identifier (argument_list "((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" ( (cast_expression "(TXT_DB *)*local_a4" ( (type_descriptor "TXT_DB *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_a4" * identifier)) , (cast_expression "(OPENSSL_STRING *)pAVar25" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" { (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" identifier (argument_list "((void *)0x0)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" identifier (argument_list "(local_d8)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "*local_b0 = local_e0;" (assignment_expression "*local_b0 = local_e0" (pointer_expression "*local_b0" * identifier) = identifier) ;) (expression_statement "local_e4 = (EVP_PKEY *)0x1;" (assignment_expression "local_e4 = (EVP_PKEY *)0x1" identifier = (cast_expression "(EVP_PKEY *)0x1" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e343;" goto statement_identifier ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0)" identifier (argument_list "(*(BIO **)local_e4,"failed to update database\n",0,0)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""failed to update database\n"" " string_content escape_sequence ") , number_literal , number_literal ))) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));" (call_expression "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10))" identifier (argument_list "(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10))" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""TXT_DB error number %ld\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(*local_a4 + 0x10)" * (cast_expression "(undefined4 *)(*local_a4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_a4 + 0x10)" ( (binary_expression "*local_a4 + 0x10" (pointer_expression "*local_a4" * identifier) + number_literal) )))) ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) }))) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "pAVar25 = local_48;" (assignment_expression "pAVar25 = local_48" identifier = identifier) ;) (expression_statement "ppcVar35 = extraout_ECX;" (assignment_expression "ppcVar35 = extraout_ECX" identifier = identifier) ;) (expression_statement "BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);" (call_expression "BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX)" identifier (argument_list "(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX)" ( identifier , (string_literal ""ERROR:Serial number %s has already been issued,\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = "      check the database/serial_file for corruption\n";" (assignment_expression "pcVar15 = "      check the database/serial_file for corruption\n"" identifier = (string_literal ""      check the database/serial_file for corruption\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" else (compound_statement "{\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" { (expression_statement "pcVar15 = "ERROR:There is already a certificate for %s\n";" (assignment_expression "pcVar15 = "ERROR:There is already a certificate for %s\n"" identifier = (string_literal ""ERROR:There is already a certificate for %s\n"" " string_content escape_sequence ")) ;) (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" identifier = (cast_expression "(EVP_PKEY *)&DAT_000c458c" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000c458c" & identifier))) ;) (expression_statement "pAVar25 = local_40;" (assignment_expression "pAVar25 = local_40" identifier = identifier) ;) (expression_statement "ppcVar35 = ppcVar14;" (assignment_expression "ppcVar35 = ppcVar14" identifier = identifier) ;) }))) (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" identifier = (call_expression "BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" identifier (argument_list "(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , identifier )))) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5)" identifier (argument_list "(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""The matching entry has the following details\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "cVar2 = **ppcVar14;" (assignment_expression "cVar2 = **ppcVar14" identifier = (pointer_expression "**ppcVar14" * (pointer_expression "*ppcVar14" * identifier))) ;) (if_statement "if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'E')" ( (binary_expression "cVar2 == 'E'" identifier == (char_literal "'E'" ' character ')) )) (compound_statement "{\n                      pcVar15 = "Expired";\n                    }" { (expression_statement "pcVar15 = "Expired";" (assignment_expression "pcVar15 = "Expired"" identifier = (string_literal ""Expired"" " string_content ")) ;) }) (else_clause "else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" else (if_statement "if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'R')" ( (binary_expression "cVar2 == 'R'" identifier == (char_literal "'R'" ' character ')) )) (compound_statement "{\n                      pcVar15 = "Revoked";\n                    }" { (expression_statement "pcVar15 = "Revoked";" (assignment_expression "pcVar15 = "Revoked"" identifier = (string_literal ""Revoked"" " string_content ")) ;) }) (else_clause "else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" else (if_statement "if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" if (parenthesized_expression "(cVar2 == 'V')" ( (binary_expression "cVar2 == 'V'" identifier == (char_literal "'V'" ' character ')) )) (compound_statement "{\n                      pcVar15 = "Valid";\n                    }" { (expression_statement "pcVar15 = "Valid";" (assignment_expression "pcVar15 = "Valid"" identifier = (string_literal ""Valid"" " string_content ")) ;) }) (else_clause "else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" else (compound_statement "{\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" { (expression_statement "pcVar15 = "\ninvalid type, Data base error\n";" (assignment_expression "pcVar15 = "\ninvalid type, Data base error\n"" identifier = (string_literal ""\ninvalid type, Data base error\n"" " escape_sequence string_content escape_sequence ")) ;) }))))))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);" (call_expression "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX)" identifier (argument_list "(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Type          :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar12 = extraout_EDX_00;" (assignment_expression "uVar12 = extraout_EDX_00" identifier = identifier) ;) (if_statement "if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" if (parenthesized_expression "(**ppcVar14 == 'R')" ( (binary_expression "**ppcVar14 == 'R'" (pointer_expression "**ppcVar14" * (pointer_expression "*ppcVar14" * identifier)) == (char_literal "'R'" ' character ')) )) (compound_statement "{\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" { (expression_statement "pcVar15 = ppcVar14[1];" (assignment_expression "pcVar15 = ppcVar14[1]" identifier = (subscript_expression "ppcVar14[1]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        pcVar15 = "undef";\n                      }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);" (call_expression "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00)" identifier (argument_list "(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Was revoked on:%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar12 = extraout_EDX_03;" (assignment_expression "uVar12 = extraout_EDX_03" identifier = identifier) ;) })) (expression_statement "pcVar15 = ppcVar14[1];" (assignment_expression "pcVar15 = ppcVar14[1]" identifier = (subscript_expression "ppcVar14[1]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);" (call_expression "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12)" identifier (argument_list "(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Expires on    :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = ppcVar14[3];" (assignment_expression "pcVar15 = ppcVar14[3]" identifier = (subscript_expression "ppcVar14[3]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);" (call_expression "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01)" identifier (argument_list "(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Serial Number :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = ppcVar14[4];" (assignment_expression "pcVar15 = ppcVar14[4]" identifier = (subscript_expression "ppcVar14[4]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);" (call_expression "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02)" identifier (argument_list "(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""File name     :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "pcVar15 = ppcVar14[5];" (assignment_expression "pcVar15 = ppcVar14[5]" identifier = (subscript_expression "ppcVar14[5]" identifier [ number_literal ])) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" { (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" identifier = (string_literal ""undef"" " string_content ")) ;) })) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);" (call_expression "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14)" identifier (argument_list "(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14)" ( (pointer_expression "*(BIO **)local_e4" * (cast_expression "(BIO **)local_e4" ( (type_descriptor "BIO **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (string_literal ""Subject Name  :%s\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) }))) (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx)" identifier (argument_list "(DAT_000c458c,"Memory allocation failure\n",ctx,ctx)" ( identifier , (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2e5;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;" statement_identifier : (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) })) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }))) }) (else_clause "else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" else (compound_statement "{\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" { (expression_statement "pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);" (assignment_expression "pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12)" identifier = (cast_expression "(X509_NAME *)FUN_00074ec0(param_10,param_11,param_12)" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00074ec0(param_10,param_11,param_12)" identifier (argument_list "(param_10,param_11,param_12)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }" if (parenthesized_expression "(pXVar4 != (X509_NAME *)0x0)" ( (binary_expression "pXVar4 != (X509_NAME *)0x0" identifier != (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }" { (expression_statement "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);" (call_expression "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4)" identifier (argument_list "((X509_REQ *)local_b4,pXVar4)" ( (cast_expression "(X509_REQ *)local_b4" ( (type_descriptor "X509_REQ *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" identifier (argument_list "(pXVar4)" ( identifier ))) ;) (goto_statement "goto LAB_0002dcb3;" goto statement_identifier ;) })) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" identifier (argument_list "(DAT_000c458c)" ( identifier ))) ;) (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" identifier = (cast_expression "(X509 *)0x0" ( (type_descriptor "X509 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" identifier = (cast_expression "(X509_NAME *)0x0" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" identifier = (cast_expression "(EVP_PKEY *)0xffffffff" ( (type_descriptor "EVP_PKEY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" identifier = (cast_expression "(ASN1_INTEGER *)0x0" ( (type_descriptor "ASN1_INTEGER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0002e2e5:\n  ppcVar14 = &local_54;" statement_identifier : (expression_statement "ppcVar14 = &local_54;" (assignment_expression "ppcVar14 = &local_54" identifier = (pointer_expression "&local_54" & identifier)) ;)) (expression_statement "local_dc = (X509_NAME *)pAVar25;" (assignment_expression "local_dc = (X509_NAME *)pAVar25" identifier = (cast_expression "(X509_NAME *)pAVar25" ( (type_descriptor "X509_NAME *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);" do (compound_statement "{\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  }" { (expression_statement "ppcVar35 = ppcVar14 + 1;" (assignment_expression "ppcVar35 = ppcVar14 + 1" identifier = (binary_expression "ppcVar14 + 1" identifier + number_literal)) ;) (expression_statement "CRYPTO_free(*ppcVar14);" (call_expression "CRYPTO_free(*ppcVar14)" identifier (argument_list "(*ppcVar14)" ( (pointer_expression "*ppcVar14" * identifier) ))) ;) (expression_statement "ppcVar14 = ppcVar35;" (assignment_expression "ppcVar14 = ppcVar35" identifier = identifier) ;) }) while (parenthesized_expression "((OPENSSL_STRING *)&local_3c != ppcVar35)" ( (binary_expression "(OPENSSL_STRING *)&local_3c != ppcVar35" (cast_expression "(OPENSSL_STRING *)&local_3c" ( (type_descriptor "OPENSSL_STRING *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3c" & identifier)) != identifier) )) ;) (expression_statement "CRYPTO_free(local_dc);" (call_expression "CRYPTO_free(local_dc)" identifier (argument_list "(local_dc)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" identifier (argument_list "(local_d8)" ( identifier ))) ;) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "X509_free(local_e0);" (call_expression "X509_free(local_e0)" identifier (argument_list "(local_e0)" ( identifier ))) ;) (labeled_statement "LAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_e4;\n  }" { (return_statement "return local_e4;" return identifier ;) }))) (expression_statement "FUN_0007d010();" (call_expression "FUN_0007d010()" identifier (argument_list "()" ( ))) ;) (labeled_statement "joined_r0x0002efd1:\n  pbVar24 = pbVar10;" statement_identifier : (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" identifier = identifier) ;)) (if_statement "if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" if (parenthesized_expression "(pXVar6 != (X509_NAME_ENTRY *)0x0)" ( (binary_expression "pXVar6 != (X509_NAME_ENTRY *)0x0" identifier != (cast_expression "(X509_NAME_ENTRY *)0x0" ( (type_descriptor "X509_NAME_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" { (labeled_statement "LAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;" statement_identifier : (expression_statement "pbVar21 = (byte *)0xffffffff;" (assignment_expression "pbVar21 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);" (assignment_expression "iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0)" identifier = (call_expression "X509_NAME_add_entry(local_b8,pXVar6,-1,0)" identifier (argument_list "(local_b8,pXVar6,-1,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" identifier = identifier) ;) (if_statement "if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" { (expression_statement "pcVar15 = "Memory allocation failure\n";" (assignment_expression "pcVar15 = "Memory allocation failure\n"" identifier = (string_literal ""Memory allocation failure\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_0002e2b5;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_0002e14e;" goto statement_identifier ;) (while_statement "while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar29 = *pbVar24 < *pbVar10;" (assignment_expression "bVar29 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar28 = *pbVar24 == *pbVar10;" (assignment_expression "bVar28 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (!bVar28) break;" if (parenthesized_expression "(!bVar28)" ( (unary_expression "!bVar28" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x0002e27e:\n    if (iVar5 == 0) break;" statement_identifier : (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;) (expression_statement "bVar28 = (!bVar29 && !bVar28) == bVar29;" (assignment_expression "bVar28 = (!bVar29 && !bVar28) == bVar29" identifier = (binary_expression "(!bVar29 && !bVar28) == bVar29" (parenthesized_expression "(!bVar29 && !bVar28)" ( (binary_expression "!bVar29 && !bVar28" (unary_expression "!bVar29" ! identifier) && (unary_expression "!bVar28" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" if (parenthesized_expression "(bVar28)" ( identifier )) (compound_statement "{\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }" { (labeled_statement "LAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);" statement_identifier : (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar15 = "The %s field needed to be supplied and was missing\n";" (assignment_expression "pcVar15 = "The %s field needed to be supplied and was missing\n"" identifier = (string_literal ""The %s field needed to be supplied and was missing\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" else (compound_statement "{\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" { (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"match";" (assignment_expression "pbVar10 = (byte *)"match"" identifier = (cast_expression "(byte *)"match"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""match"" " string_content "))) ;) (do_statement "do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);" do (compound_statement "{\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar31 = *pbVar24 < *pbVar10;" (assignment_expression "bVar31 = *pbVar24 < *pbVar10" identifier = (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar28 = *pbVar24 == *pbVar10;" (assignment_expression "bVar28 = *pbVar24 == *pbVar10" identifier = (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar28)" ( identifier )) ;) (if_statement "if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" if (parenthesized_expression "((!bVar31 && !bVar28) == bVar31)" ( (binary_expression "(!bVar31 && !bVar28) == bVar31" (parenthesized_expression "(!bVar31 && !bVar28)" ( (binary_expression "!bVar31 && !bVar28" (unary_expression "!bVar31" ! identifier) && (unary_expression "!bVar28" ! identifier)) )) == identifier) )) (compound_statement "{\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }" { (labeled_statement "LAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);" statement_identifier : (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" identifier = (pointer_expression "*(byte **)(local_d0 + 4)" * (cast_expression "(byte **)(local_d0 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 4)" ( (binary_expression "local_d0 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar15 = "The mandatory %s field was missing\n";" (assignment_expression "pcVar15 = "The mandatory %s field was missing\n"" identifier = (string_literal ""The mandatory %s field was missing\n"" " string_content escape_sequence ")) ;) }) (else_clause "else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" else (compound_statement "{\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" { (labeled_statement "LAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";" statement_identifier : (expression_statement "pcVar15 = "%s:invalid type in \'policy\' configuration\n";" (assignment_expression "pcVar15 = "%s:invalid type in \'policy\' configuration\n"" identifier = (string_literal ""%s:invalid type in \'policy\' configuration\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;)) }))) }))) (labeled_statement "LAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);" statement_identifier : (expression_statement "BIO_printf(DAT_000c458c,pcVar15,pbVar21);" (call_expression "BIO_printf(DAT_000c458c,pcVar15,pbVar21)" identifier (argument_list "(DAT_000c458c,pcVar15,pbVar21)" ( identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_0002e2c6;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence string_content escape_sequence ") ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) != LIT) )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT -> field_identifier) , (field_expression IDENT -> field_identifier) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression LIT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) != IDENT) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) }))))))) }))) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content ")) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (field_expression IDENT -> field_identifier))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (field_expression IDENT -> field_identifier)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " escape_sequence escape_sequence ") ))) ;)) }))) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content escape_sequence ")) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content escape_sequence ")) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & (field_expression IDENT -> field_identifier))) + LIT) )))) ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) == (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) , (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 ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT . field_identifier))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , 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 ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) -> field_identifier)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT -> field_identifier)) ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT -> field_identifier)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))))) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression LIT < IDENT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) , (binary_expression LIT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))))) ;) }))) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (string_literal " string_content ") , LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , LIT , (pointer_expression & IDENT) )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , IDENT , IDENT , (binary_expression IDENT | LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content ") , IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " escape_sequence ") , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content ") , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , LIT , LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + LIT) ))) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & (field_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) -> field_identifier))) + LIT) ))) , (string_literal " string_content ") ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & (field_expression IDENT -> field_identifier)) )) [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) })) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , IDENT , IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content escape_sequence ")) ;) }))))))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * IDENT)) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , 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 ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) != IDENT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;) })) })) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;))) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;)) }))) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined4 __regparm3\nFUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)\n\n{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    \n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0002db80(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)" (identifier "FUN_0002db80") (parameter_list "(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,\n            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,\n            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,\n            undefined4 param_25,X509 *param_26)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "EVP_PKEY *param_2" (type_identifier "EVP_PKEY") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "X509 *param_3" (type_identifier "X509") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "int *param_7" (primitive_type "int") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "int *param_8" (primitive_type "int") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "BIGNUM *param_9" (type_identifier "BIGNUM") (pointer_declarator "*param_9" (* "*") (identifier "param_9"))) (, ",") (parameter_declaration "int param_10" (primitive_type "int") (identifier "param_10")) (, ",") (parameter_declaration "undefined4 param_11" (type_identifier "undefined4") (identifier "param_11")) (, ",") (parameter_declaration "undefined4 param_12" (type_identifier "undefined4") (identifier "param_12")) (, ",") (parameter_declaration "int param_13" (primitive_type "int") (identifier "param_13")) (, ",") (parameter_declaration "undefined4 param_14" (type_identifier "undefined4") (identifier "param_14")) (, ",") (parameter_declaration "int param_15" (primitive_type "int") (identifier "param_15")) (, ",") (parameter_declaration "X509 *param_16" (type_identifier "X509") (pointer_declarator "*param_16" (* "*") (identifier "param_16"))) (, ",") (parameter_declaration "int param_17" (primitive_type "int") (identifier "param_17")) (, ",") (parameter_declaration "int param_18" (primitive_type "int") (identifier "param_18")) (, ",") (parameter_declaration "X509V3_CTX *param_19" (type_identifier "X509V3_CTX") (pointer_declarator "*param_19" (* "*") (identifier "param_19"))) (, ",") (parameter_declaration "char *param_20" (primitive_type "char") (pointer_declarator "*param_20" (* "*") (identifier "param_20"))) (, ",") (parameter_declaration "CONF *param_21" (type_identifier "CONF") (pointer_declarator "*param_21" (* "*") (identifier "param_21"))) (, ",") (parameter_declaration "uint param_22" (type_identifier "uint") (identifier "param_22")) (, ",") (parameter_declaration "ulong param_23" (type_identifier "ulong") (identifier "param_23")) (, ",") (parameter_declaration "int param_24" (primitive_type "int") (identifier "param_24")) (, ",") (parameter_declaration "undefined4 param_25" (type_identifier "undefined4") (identifier "param_25")) (, ",") (parameter_declaration "X509 *param_26" (type_identifier "X509") (pointer_declarator "*param_26" (* "*") (identifier "param_26"))) () ")"))) (compound_statement "{\n  uchar uVar1;\n  char cVar2;\n  BIO *pBVar3;\n  CONF *conf;\n  X509_NAME *pXVar4;\n  int iVar5;\n  X509_NAME_ENTRY *pXVar6;\n  ASN1_STRING *pAVar7;\n  ASN1_OBJECT *o;\n  char *pcVar8;\n  byte *pbVar10;\n  X509 *pXVar11;\n  undefined4 uVar12;\n  EVP_PKEY *pEVar13;\n  OPENSSL_STRING *ppcVar14;\n  char *pcVar15;\n  ASN1_TIME *a;\n  char *pcVar16;\n  uint uVar17;\n  int iVar18;\n  int loc;\n  uchar *puVar19;\n  X509 *pXVar20;\n  OPENSSL_STRING *extraout_ECX;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  undefined4 extraout_EDX_01;\n  undefined4 extraout_EDX_02;\n  byte *pbVar21;\n  undefined4 extraout_EDX_03;\n  undefined4 extraout_EDX_04;\n  uchar *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  X509V3_CTX *ctx;\n  ASN1_INTEGER *pAVar25;\n  byte *pbVar26;\n  int in_GS_OFFSET;\n  undefined1 uVar27;\n  bool bVar28;\n  bool bVar29;\n  undefined1 uVar30;\n  bool bVar31;\n  byte bVar32;\n  undefined8 uVar33;\n  undefined4 uVar34;\n  OPENSSL_STRING *ppcVar35;\n  X509 *x;\n  undefined1 auStack_ec [8];\n  EVP_PKEY *local_e4;\n  X509 *local_e0;\n  X509_NAME *local_dc;\n  X509_NAME *local_d8;\n  char *local_d4;\n  char *local_d0;\n  undefined4 local_cc;\n  ASN1_STRING *local_c8;\n  ASN1_STRING *local_c4;\n  byte *local_c0;\n  byte *local_bc;\n  X509_NAME *local_b8;\n  X509V3_CTX *local_b4;\n  undefined4 *local_b0;\n  X509 *local_ac;\n  char *local_a8;\n  int *local_a4;\n  BIGNUM *local_a0;\n  EVP_PKEY *local_9c;\n  int local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  int *local_8c;\n  undefined4 local_88;\n  CONF *local_84;\n  byte *local_80;\n  X509V3_CTX local_70;\n  OPENSSL_STRING local_54;\n  void *local_50;\n  undefined4 local_4c;\n  ASN1_INTEGER *local_48;\n  char *local_44;\n  ASN1_INTEGER *local_40;\n  undefined4 local_3c;\n  char acStack_23 [3];\n  int local_20;\n  undefined4 uStack_14;\n  char *pcVar9;\n  \n  bVar32 = 0;\n  uStack_14 = 0x2db89;\n  local_94 = param_4;\n  local_90 = param_5;\n  local_88 = param_14;\n  local_cc = param_6;\n  local_98 = param_15;\n  local_8c = param_7;\n  local_b4 = param_19;\n  local_a4 = param_8;\n  local_a8 = param_20;\n  local_a0 = param_9;\n  local_84 = param_21;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_54 = (char *)0x0;\n  local_50 = (void *)0x0;\n  local_4c = 0;\n  local_48 = (ASN1_INTEGER *)0x0;\n  local_44 = (char *)0x0;\n  local_40 = (ASN1_INTEGER *)0x0;\n  local_ac = param_3;\n  local_9c = param_2;\n  if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }\nLAB_0002e2e5:\n  ppcVar14 = &local_54;\n  local_dc = (X509_NAME *)pAVar25;\n  do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);\n  CRYPTO_free(local_dc);\n  X509_NAME_free(local_d8);\n  X509_NAME_free(local_b8);\n  X509_free(local_e0);\nLAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }\n                    \n  FUN_0007d010();\njoined_r0x0002efd1:\n  pbVar24 = pbVar10;\n  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }\n  goto LAB_0002e14e;\n  while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }\n  bVar31 = false;\n  bVar28 = (!bVar29 && !bVar28) == bVar29;\n  if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }\nLAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);\n  goto LAB_0002e2c6;\n}" ({ "{") (declaration "uchar uVar1;" (type_identifier "uchar") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "BIO *pBVar3;" (type_identifier "BIO") (pointer_declarator "*pBVar3" (* "*") (identifier "pBVar3")) (; ";")) (declaration "CONF *conf;" (type_identifier "CONF") (pointer_declarator "*conf" (* "*") (identifier "conf")) (; ";")) (declaration "X509_NAME *pXVar4;" (type_identifier "X509_NAME") (pointer_declarator "*pXVar4" (* "*") (identifier "pXVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "X509_NAME_ENTRY *pXVar6;" (type_identifier "X509_NAME_ENTRY") (pointer_declarator "*pXVar6" (* "*") (identifier "pXVar6")) (; ";")) (declaration "ASN1_STRING *pAVar7;" (type_identifier "ASN1_STRING") (pointer_declarator "*pAVar7" (* "*") (identifier "pAVar7")) (; ";")) (declaration "ASN1_OBJECT *o;" (type_identifier "ASN1_OBJECT") (pointer_declarator "*o" (* "*") (identifier "o")) (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "X509 *pXVar11;" (type_identifier "X509") (pointer_declarator "*pXVar11" (* "*") (identifier "pXVar11")) (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "EVP_PKEY *pEVar13;" (type_identifier "EVP_PKEY") (pointer_declarator "*pEVar13" (* "*") (identifier "pEVar13")) (; ";")) (declaration "OPENSSL_STRING *ppcVar14;" (type_identifier "OPENSSL_STRING") (pointer_declarator "*ppcVar14" (* "*") (identifier "ppcVar14")) (; ";")) (declaration "char *pcVar15;" (primitive_type "char") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "ASN1_TIME *a;" (type_identifier "ASN1_TIME") (pointer_declarator "*a" (* "*") (identifier "a")) (; ";")) (declaration "char *pcVar16;" (primitive_type "char") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int loc;" (primitive_type "int") (identifier "loc") (; ";")) (declaration "uchar *puVar19;" (type_identifier "uchar") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "X509 *pXVar20;" (type_identifier "X509") (pointer_declarator "*pXVar20" (* "*") (identifier "pXVar20")) (; ";")) (declaration "OPENSSL_STRING *extraout_ECX;" (type_identifier "OPENSSL_STRING") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "undefined4 extraout_EDX_00;" (type_identifier "undefined4") (identifier "extraout_EDX_00") (; ";")) (declaration "undefined4 extraout_EDX_01;" (type_identifier "undefined4") (identifier "extraout_EDX_01") (; ";")) (declaration "undefined4 extraout_EDX_02;" (type_identifier "undefined4") (identifier "extraout_EDX_02") (; ";")) (declaration "byte *pbVar21;" (type_identifier "byte") (pointer_declarator "*pbVar21" (* "*") (identifier "pbVar21")) (; ";")) (declaration "undefined4 extraout_EDX_03;" (type_identifier "undefined4") (identifier "extraout_EDX_03") (; ";")) (declaration "undefined4 extraout_EDX_04;" (type_identifier "undefined4") (identifier "extraout_EDX_04") (; ";")) (declaration "uchar *puVar22;" (type_identifier "uchar") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "byte *pbVar23;" (type_identifier "byte") (pointer_declarator "*pbVar23" (* "*") (identifier "pbVar23")) (; ";")) (declaration "byte *pbVar24;" (type_identifier "byte") (pointer_declarator "*pbVar24" (* "*") (identifier "pbVar24")) (; ";")) (declaration "X509V3_CTX *ctx;" (type_identifier "X509V3_CTX") (pointer_declarator "*ctx" (* "*") (identifier "ctx")) (; ";")) (declaration "ASN1_INTEGER *pAVar25;" (type_identifier "ASN1_INTEGER") (pointer_declarator "*pAVar25" (* "*") (identifier "pAVar25")) (; ";")) (declaration "byte *pbVar26;" (type_identifier "byte") (pointer_declarator "*pbVar26" (* "*") (identifier "pbVar26")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined1 uVar27;" (type_identifier "undefined1") (identifier "uVar27") (; ";")) (declaration "bool bVar28;" (primitive_type "bool") (identifier "bVar28") (; ";")) (declaration "bool bVar29;" (primitive_type "bool") (identifier "bVar29") (; ";")) (declaration "undefined1 uVar30;" (type_identifier "undefined1") (identifier "uVar30") (; ";")) (declaration "bool bVar31;" (primitive_type "bool") (identifier "bVar31") (; ";")) (declaration "byte bVar32;" (type_identifier "byte") (identifier "bVar32") (; ";")) (declaration "undefined8 uVar33;" (type_identifier "undefined8") (identifier "uVar33") (; ";")) (declaration "undefined4 uVar34;" (type_identifier "undefined4") (identifier "uVar34") (; ";")) (declaration "OPENSSL_STRING *ppcVar35;" (type_identifier "OPENSSL_STRING") (pointer_declarator "*ppcVar35" (* "*") (identifier "ppcVar35")) (; ";")) (declaration "X509 *x;" (type_identifier "X509") (pointer_declarator "*x" (* "*") (identifier "x")) (; ";")) (declaration "undefined1 auStack_ec [8];" (type_identifier "undefined1") (array_declarator "auStack_ec [8]" (identifier "auStack_ec") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "EVP_PKEY *local_e4;" (type_identifier "EVP_PKEY") (pointer_declarator "*local_e4" (* "*") (identifier "local_e4")) (; ";")) (declaration "X509 *local_e0;" (type_identifier "X509") (pointer_declarator "*local_e0" (* "*") (identifier "local_e0")) (; ";")) (declaration "X509_NAME *local_dc;" (type_identifier "X509_NAME") (pointer_declarator "*local_dc" (* "*") (identifier "local_dc")) (; ";")) (declaration "X509_NAME *local_d8;" (type_identifier "X509_NAME") (pointer_declarator "*local_d8" (* "*") (identifier "local_d8")) (; ";")) (declaration "char *local_d4;" (primitive_type "char") (pointer_declarator "*local_d4" (* "*") (identifier "local_d4")) (; ";")) (declaration "char *local_d0;" (primitive_type "char") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (declaration "undefined4 local_cc;" (type_identifier "undefined4") (identifier "local_cc") (; ";")) (declaration "ASN1_STRING *local_c8;" (type_identifier "ASN1_STRING") (pointer_declarator "*local_c8" (* "*") (identifier "local_c8")) (; ";")) (declaration "ASN1_STRING *local_c4;" (type_identifier "ASN1_STRING") (pointer_declarator "*local_c4" (* "*") (identifier "local_c4")) (; ";")) (declaration "byte *local_c0;" (type_identifier "byte") (pointer_declarator "*local_c0" (* "*") (identifier "local_c0")) (; ";")) (declaration "byte *local_bc;" (type_identifier "byte") (pointer_declarator "*local_bc" (* "*") (identifier "local_bc")) (; ";")) (declaration "X509_NAME *local_b8;" (type_identifier "X509_NAME") (pointer_declarator "*local_b8" (* "*") (identifier "local_b8")) (; ";")) (declaration "X509V3_CTX *local_b4;" (type_identifier "X509V3_CTX") (pointer_declarator "*local_b4" (* "*") (identifier "local_b4")) (; ";")) (declaration "undefined4 *local_b0;" (type_identifier "undefined4") (pointer_declarator "*local_b0" (* "*") (identifier "local_b0")) (; ";")) (declaration "X509 *local_ac;" (type_identifier "X509") (pointer_declarator "*local_ac" (* "*") (identifier "local_ac")) (; ";")) (declaration "char *local_a8;" (primitive_type "char") (pointer_declarator "*local_a8" (* "*") (identifier "local_a8")) (; ";")) (declaration "int *local_a4;" (primitive_type "int") (pointer_declarator "*local_a4" (* "*") (identifier "local_a4")) (; ";")) (declaration "BIGNUM *local_a0;" (type_identifier "BIGNUM") (pointer_declarator "*local_a0" (* "*") (identifier "local_a0")) (; ";")) (declaration "EVP_PKEY *local_9c;" (type_identifier "EVP_PKEY") (pointer_declarator "*local_9c" (* "*") (identifier "local_9c")) (; ";")) (declaration "int local_98;" (primitive_type "int") (identifier "local_98") (; ";")) (declaration "undefined4 local_94;" (type_identifier "undefined4") (identifier "local_94") (; ";")) (declaration "undefined4 local_90;" (type_identifier "undefined4") (identifier "local_90") (; ";")) (declaration "int *local_8c;" (primitive_type "int") (pointer_declarator "*local_8c" (* "*") (identifier "local_8c")) (; ";")) (declaration "undefined4 local_88;" (type_identifier "undefined4") (identifier "local_88") (; ";")) (declaration "CONF *local_84;" (type_identifier "CONF") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "byte *local_80;" (type_identifier "byte") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "X509V3_CTX local_70;" (type_identifier "X509V3_CTX") (identifier "local_70") (; ";")) (declaration "OPENSSL_STRING local_54;" (type_identifier "OPENSSL_STRING") (identifier "local_54") (; ";")) (declaration "void *local_50;" (primitive_type "void") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "ASN1_INTEGER *local_48;" (type_identifier "ASN1_INTEGER") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "char *local_44;" (primitive_type "char") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "ASN1_INTEGER *local_40;" (type_identifier "ASN1_INTEGER") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "char acStack_23 [3];" (primitive_type "char") (array_declarator "acStack_23 [3]" (identifier "acStack_23") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (expression_statement "bVar32 = 0;" (assignment_expression "bVar32 = 0" (identifier "bVar32") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x2db89;" (assignment_expression "uStack_14 = 0x2db89" (identifier "uStack_14") (= "=") (number_literal "0x2db89")) (; ";")) (expression_statement "local_94 = param_4;" (assignment_expression "local_94 = param_4" (identifier "local_94") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_90 = param_5;" (assignment_expression "local_90 = param_5" (identifier "local_90") (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_88 = param_14;" (assignment_expression "local_88 = param_14" (identifier "local_88") (= "=") (identifier "param_14")) (; ";")) (expression_statement "local_cc = param_6;" (assignment_expression "local_cc = param_6" (identifier "local_cc") (= "=") (identifier "param_6")) (; ";")) (expression_statement "local_98 = param_15;" (assignment_expression "local_98 = param_15" (identifier "local_98") (= "=") (identifier "param_15")) (; ";")) (expression_statement "local_8c = param_7;" (assignment_expression "local_8c = param_7" (identifier "local_8c") (= "=") (identifier "param_7")) (; ";")) (expression_statement "local_b4 = param_19;" (assignment_expression "local_b4 = param_19" (identifier "local_b4") (= "=") (identifier "param_19")) (; ";")) (expression_statement "local_a4 = param_8;" (assignment_expression "local_a4 = param_8" (identifier "local_a4") (= "=") (identifier "param_8")) (; ";")) (expression_statement "local_a8 = param_20;" (assignment_expression "local_a8 = param_20" (identifier "local_a8") (= "=") (identifier "param_20")) (; ";")) (expression_statement "local_a0 = param_9;" (assignment_expression "local_a0 = param_9" (identifier "local_a0") (= "=") (identifier "param_9")) (; ";")) (expression_statement "local_84 = param_21;" (assignment_expression "local_84 = param_21" (identifier "local_84") (= "=") (identifier "param_21")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_54 = (char *)0x0;" (assignment_expression "local_54 = (char *)0x0" (identifier "local_54") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_50 = (void *)0x0;" (assignment_expression "local_50 = (void *)0x0" (identifier "local_50") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = (ASN1_INTEGER *)0x0;" (assignment_expression "local_48 = (ASN1_INTEGER *)0x0" (identifier "local_48") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_44 = (char *)0x0;" (assignment_expression "local_44 = (char *)0x0" (identifier "local_44") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_40 = (ASN1_INTEGER *)0x0;" (assignment_expression "local_40 = (ASN1_INTEGER *)0x0" (identifier "local_40") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_ac = param_3;" (assignment_expression "local_ac = param_3" (identifier "local_ac") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_9c = param_2;" (assignment_expression "local_9c = param_2" (identifier "local_9c") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_10 == 0) {\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }\n  else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" (if "if") (parenthesized_expression "(param_10 == 0)" (( "(") (binary_expression "param_10 == 0" (identifier "param_10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }\n    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);\n    local_d8 = (X509_NAME *)&DAT_000c458c;\n    local_e4 = (EVP_PKEY *)0x0;\n    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }\n    local_b8 = X509_NAME_new();\n    if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_0002dcb3:\n    if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" (statement_identifier "LAB_0002dcb3") (: ":") (if_statement "if (param_24 != 0) {\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" (if "if") (parenthesized_expression "(param_24 != 0)" (( "(") (binary_expression "param_24 != 0" (identifier "param_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");\n    }" ({ "{") (expression_statement "BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");" (call_expression "BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n")" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n")" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""The Subject\'s Distinguished Name is as follows\n"" (" """) (string_content "The Subject") (escape_sequence "\'") (string_content "s Distinguished Name is as follows") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (} "}")))) (expression_statement "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);" (assignment_expression "local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4)" (identifier "local_dc") (= "=") (cast_expression "(X509_NAME *)X509_REQ_get_subject_name(local_b4)" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509_REQ_get_subject_name(local_b4)" (identifier "X509_REQ_get_subject_name") (argument_list "(local_b4)" (( "(") (identifier "local_b4") () ")"))))) (; ";")) (expression_statement "local_d8 = (X509_NAME *)&DAT_000c458c;" (assignment_expression "local_d8 = (X509_NAME *)&DAT_000c458c" (identifier "local_d8") (= "=") (cast_expression "(X509_NAME *)&DAT_000c458c" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000c458c" (& "&") (identifier "DAT_000c458c")))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0x0" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (while_statement "while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" (while "while") (parenthesized_expression "(iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5)" (( "(") (comma_expression "iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5" (assignment_expression "iVar5 = X509_NAME_entry_count(local_dc)" (identifier "iVar5") (= "=") (call_expression "X509_NAME_entry_count(local_dc)" (identifier "X509_NAME_entry_count") (argument_list "(local_dc)" (( "(") (identifier "local_dc") () ")")))) (, ",") (binary_expression "(int)local_e4 < iVar5" (cast_expression "(int)local_e4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_e4")) (< "<") (identifier "iVar5"))) () ")")) (compound_statement "{\n      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);\n      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);\n      o = X509_NAME_ENTRY_get_object(pXVar6);\n      iVar5 = OBJ_obj2nid(o);\n      if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }\n      if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }\nLAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);\n    }" ({ "{") (expression_statement "pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4)" (identifier "pXVar6") (= "=") (call_expression "X509_NAME_get_entry(local_dc,(int)local_e4)" (identifier "X509_NAME_get_entry") (argument_list "(local_dc,(int)local_e4)" (( "(") (identifier "local_dc") (, ",") (cast_expression "(int)local_e4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_e4")) () ")")))) (; ";")) (expression_statement "pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);" (assignment_expression "pAVar7 = X509_NAME_ENTRY_get_data(pXVar6)" (identifier "pAVar7") (= "=") (call_expression "X509_NAME_ENTRY_get_data(pXVar6)" (identifier "X509_NAME_ENTRY_get_data") (argument_list "(pXVar6)" (( "(") (identifier "pXVar6") () ")")))) (; ";")) (expression_statement "o = X509_NAME_ENTRY_get_object(pXVar6);" (assignment_expression "o = X509_NAME_ENTRY_get_object(pXVar6)" (identifier "o") (= "=") (call_expression "X509_NAME_ENTRY_get_object(pXVar6)" (identifier "X509_NAME_ENTRY_get_object") (argument_list "(pXVar6)" (( "(") (identifier "pXVar6") () ")")))) (; ";")) (expression_statement "iVar5 = OBJ_obj2nid(o);" (assignment_expression "iVar5 = OBJ_obj2nid(o)" (identifier "iVar5") (= "=") (call_expression "OBJ_obj2nid(o)" (identifier "OBJ_obj2nid") (argument_list "(o)" (( "(") (identifier "o") () ")")))) (; ";")) (if_statement "if (DAT_000c44e8 != 0) {\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" (if "if") (parenthesized_expression "(DAT_000c44e8 != 0)" (( "(") (binary_expression "DAT_000c44e8 != 0" (identifier "DAT_000c44e8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar18 = pAVar7->type;\n        if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }\n        if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }\nLAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);\n        if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }\n        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";\nLAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);\n        local_b8 = (X509_NAME *)0x0;\n        goto LAB_0002de05;\n      }" ({ "{") (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" (identifier "iVar18") (= "=") (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type"))) (; ";")) (if_statement "if (iVar18 == 0x1c) {\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }" (if "if") (parenthesized_expression "(iVar18 == 0x1c)" (( "(") (binary_expression "iVar18 == 0x1c" (identifier "iVar18") (== "==") (number_literal "0x1c")) () ")")) (compound_statement "{\n          ASN1_UNIVERSALSTRING_to_string(pAVar7);\n          iVar18 = pAVar7->type;\n        }" ({ "{") (expression_statement "ASN1_UNIVERSALSTRING_to_string(pAVar7);" (call_expression "ASN1_UNIVERSALSTRING_to_string(pAVar7)" (identifier "ASN1_UNIVERSALSTRING_to_string") (argument_list "(pAVar7)" (( "(") (identifier "pAVar7") () ")"))) (; ";")) (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" (identifier "iVar18") (= "=") (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type"))) (; ";")) (} "}"))) (if_statement "if (iVar18 == 0x16) {\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }\n        else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" (if "if") (parenthesized_expression "(iVar18 == 0x16)" (( "(") (binary_expression "iVar18 == 0x16" (identifier "iVar18") (== "==") (number_literal "0x16")) () ")")) (compound_statement "{\n          if (iVar5 == 0x30) goto LAB_0002dfb4;\n          pAVar7->type = 0x14;\n        }" ({ "{") (if_statement "if (iVar5 == 0x30) goto LAB_0002dfb4;" (if "if") (parenthesized_expression "(iVar5 == 0x30)" (( "(") (binary_expression "iVar5 == 0x30" (identifier "iVar5") (== "==") (number_literal "0x30")) () ")")) (goto_statement "goto LAB_0002dfb4;" (goto "goto") (statement_identifier "LAB_0002dfb4") (; ";"))) (expression_statement "pAVar7->type = 0x14;" (assignment_expression "pAVar7->type = 0x14" (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type")) (= "=") (number_literal "0x14")) (; ";")) (} "}")) (else_clause "else {\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" (else "else") (compound_statement "{\n          if (iVar5 != 0x30) goto LAB_0002dd0e;\n          if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }\nLAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;\n          if (pAVar7->type != 0x16) goto LAB_0002dfcf;\n        }" ({ "{") (if_statement "if (iVar5 != 0x30) goto LAB_0002dd0e;" (if "if") (parenthesized_expression "(iVar5 != 0x30)" (( "(") (binary_expression "iVar5 != 0x30" (identifier "iVar5") (!= "!=") (number_literal "0x30")) () ")")) (goto_statement "goto LAB_0002dd0e;" (goto "goto") (statement_identifier "LAB_0002dd0e") (; ";"))) (if_statement "if (iVar18 == 0x13) {\n            pAVar7->type = 0x16;\n          }" (if "if") (parenthesized_expression "(iVar18 == 0x13)" (( "(") (binary_expression "iVar18 == 0x13" (identifier "iVar18") (== "==") (number_literal "0x13")) () ")")) (compound_statement "{\n            pAVar7->type = 0x16;\n          }" ({ "{") (expression_statement "pAVar7->type = 0x16;" (assignment_expression "pAVar7->type = 0x16" (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type")) (= "=") (number_literal "0x16")) (; ";")) (} "}"))) (labeled_statement "LAB_0002dfb4:\n          if (param_13 == 0) goto LAB_0002dd2b;" (statement_identifier "LAB_0002dfb4") (: ":") (if_statement "if (param_13 == 0) goto LAB_0002dd2b;" (if "if") (parenthesized_expression "(param_13 == 0)" (( "(") (binary_expression "param_13 == 0" (identifier "param_13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002dd2b;" (goto "goto") (statement_identifier "LAB_0002dd2b") (; ";")))) (if_statement "if (pAVar7->type != 0x16) goto LAB_0002dfcf;" (if "if") (parenthesized_expression "(pAVar7->type != 0x16)" (( "(") (binary_expression "pAVar7->type != 0x16" (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type")) (!= "!=") (number_literal "0x16")) () ")")) (goto_statement "goto LAB_0002dfcf;" (goto "goto") (statement_identifier "LAB_0002dfcf") (; ";"))) (} "}")))) (labeled_statement "LAB_0002ddaf:\n        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);" (statement_identifier "LAB_0002ddaf") (: ":") (expression_statement "iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);" (assignment_expression "iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length)" (identifier "iVar5") (= "=") (call_expression "ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length)" (identifier "ASN1_PRINTABLE_type") (argument_list "(pAVar7->data,pAVar7->length)" (( "(") (field_expression "pAVar7->data" (identifier "pAVar7") (-> "->") (field_identifier "data")) (, ",") (field_expression "pAVar7->length" (identifier "pAVar7") (-> "->") (field_identifier "length")) () ")")))) (; ";"))) (if_statement "if (iVar5 == 0x14) {\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }\n        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" (if "if") (parenthesized_expression "(iVar5 == 0x14)" (( "(") (binary_expression "iVar5 == 0x14" (identifier "iVar5") (== "==") (number_literal "0x14")) () ")")) (compound_statement "{\n          if (pAVar7->type == 0x14) goto LAB_0002dd1c;\n        }" ({ "{") (if_statement "if (pAVar7->type == 0x14) goto LAB_0002dd1c;" (if "if") (parenthesized_expression "(pAVar7->type == 0x14)" (( "(") (binary_expression "pAVar7->type == 0x14" (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type")) (== "==") (number_literal "0x14")) () ")")) (goto_statement "goto LAB_0002dd1c;" (goto "goto") (statement_identifier "LAB_0002dd1c") (; ";"))) (} "}")) (else_clause "else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" (else "else") (if_statement "if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" (if "if") (parenthesized_expression "((iVar5 != 0x16) || (pAVar7->type != 0x13))" (( "(") (binary_expression "(iVar5 != 0x16) || (pAVar7->type != 0x13)" (parenthesized_expression "(iVar5 != 0x16)" (( "(") (binary_expression "iVar5 != 0x16" (identifier "iVar5") (!= "!=") (number_literal "0x16")) () ")")) (|| "||") (parenthesized_expression "(pAVar7->type != 0x13)" (( "(") (binary_expression "pAVar7->type != 0x13" (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type")) (!= "!=") (number_literal "0x13")) () ")"))) () ")")) (compound_statement "{\nLAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }\n          goto LAB_0002dd2b;\n        }" ({ "{") (labeled_statement "LAB_0002dd1c:\n          if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" (statement_identifier "LAB_0002dd1c") (: ":") (if_statement "if (param_24 != 0) {\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" (if "if") (parenthesized_expression "(param_24 != 0)" (( "(") (binary_expression "param_24 != 0" (identifier "param_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);\n            pcVar15 = (char *)((int)&local_3c + 3);\n            pcVar16 = pcVar15;\n            if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }\n            pcVar16[0] = ':';\n            pcVar16[1] = '\0';\n            BIO_puts(*(BIO **)local_d8,pcVar15);\n            iVar5 = pAVar7->type;\n            if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }\n            local_d4 = "^%c";\n            puVar22 = pAVar7->data;\n            local_d0 = "\\0x%02X";\n            puVar19 = puVar22 + pAVar7->length;\n            if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }\nLAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");\n          }" ({ "{") (expression_statement "iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);" (assignment_expression "iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" (identifier "iVar5") (= "=") (call_expression "i2a_ASN1_OBJECT(*(BIO **)local_d8,o)" (identifier "i2a_ASN1_OBJECT") (argument_list "(*(BIO **)local_d8,o)" (( "(") (pointer_expression "*(BIO **)local_d8" (* "*") (cast_expression "(BIO **)local_d8" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_d8"))) (, ",") (identifier "o") () ")")))) (; ";")) (expression_statement "pcVar15 = (char *)((int)&local_3c + 3);" (assignment_expression "pcVar15 = (char *)((int)&local_3c + 3)" (identifier "pcVar15") (= "=") (cast_expression "(char *)((int)&local_3c + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&local_3c + 3)" (( "(") (binary_expression "(int)&local_3c + 3" (cast_expression "(int)&local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_3c" (& "&") (identifier "local_3c"))) (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "pcVar16 = pcVar15;" (assignment_expression "pcVar16 = pcVar15" (identifier "pcVar16") (= "=") (identifier "pcVar15")) (; ";")) (if_statement "if (0 < 0x16 - iVar5) {\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }" (if "if") (parenthesized_expression "(0 < 0x16 - iVar5)" (( "(") (binary_expression "0 < 0x16 - iVar5" (number_literal "0") (< "<") (binary_expression "0x16 - iVar5" (number_literal "0x16") (- "-") (identifier "iVar5"))) () ")")) (compound_statement "{\n              pcVar9 = pcVar15;\n              do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);\n            }" ({ "{") (expression_statement "pcVar9 = pcVar15;" (assignment_expression "pcVar9 = pcVar15" (identifier "pcVar9") (= "=") (identifier "pcVar15")) (; ";")) (do_statement "do {\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              } while (pcVar15 + (0x16 - iVar5) != pcVar8);" (do "do") (compound_statement "{\n                pcVar8 = pcVar9 + 1;\n                *pcVar9 = ' ';\n                pcVar9 = pcVar8;\n                pcVar16 = pcVar15 + (0x16 - iVar5);\n              }" ({ "{") (expression_statement "pcVar8 = pcVar9 + 1;" (assignment_expression "pcVar8 = pcVar9 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar9 + 1" (identifier "pcVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar9 = ' ';" (assignment_expression "*pcVar9 = ' '" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (= "=") (char_literal "' '" (' "'") (character " ") (' "'"))) (; ";")) (expression_statement "pcVar9 = pcVar8;" (assignment_expression "pcVar9 = pcVar8" (identifier "pcVar9") (= "=") (identifier "pcVar8")) (; ";")) (expression_statement "pcVar16 = pcVar15 + (0x16 - iVar5);" (assignment_expression "pcVar16 = pcVar15 + (0x16 - iVar5)" (identifier "pcVar16") (= "=") (binary_expression "pcVar15 + (0x16 - iVar5)" (identifier "pcVar15") (+ "+") (parenthesized_expression "(0x16 - iVar5)" (( "(") (binary_expression "0x16 - iVar5" (number_literal "0x16") (- "-") (identifier "iVar5")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar15 + (0x16 - iVar5) != pcVar8)" (( "(") (binary_expression "pcVar15 + (0x16 - iVar5) != pcVar8" (binary_expression "pcVar15 + (0x16 - iVar5)" (identifier "pcVar15") (+ "+") (parenthesized_expression "(0x16 - iVar5)" (( "(") (binary_expression "0x16 - iVar5" (number_literal "0x16") (- "-") (identifier "iVar5")) () ")"))) (!= "!=") (identifier "pcVar8")) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar16[0] = ':';" (assignment_expression "pcVar16[0] = ':'" (subscript_expression "pcVar16[0]" (identifier "pcVar16") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "':'" (' "'") (character ":") (' "'"))) (; ";")) (expression_statement "pcVar16[1] = '\0';" (assignment_expression "pcVar16[1] = '\0'" (subscript_expression "pcVar16[1]" (identifier "pcVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "BIO_puts(*(BIO **)local_d8,pcVar15);" (call_expression "BIO_puts(*(BIO **)local_d8,pcVar15)" (identifier "BIO_puts") (argument_list "(*(BIO **)local_d8,pcVar15)" (( "(") (pointer_expression "*(BIO **)local_d8" (* "*") (cast_expression "(BIO **)local_d8" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_d8"))) (, ",") (identifier "pcVar15") () ")"))) (; ";")) (expression_statement "iVar5 = pAVar7->type;" (assignment_expression "iVar5 = pAVar7->type" (identifier "iVar5") (= "=") (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type"))) (; ";")) (if_statement "if (iVar5 == 0x13) {\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }\n            else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" (if "if") (parenthesized_expression "(iVar5 == 0x13)" (( "(") (binary_expression "iVar5 == 0x13" (identifier "iVar5") (== "==") (number_literal "0x13")) () ")")) (compound_statement "{\n              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");\n            }" ({ "{") (expression_statement "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");" (call_expression "BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'")" (identifier "BIO_printf") (argument_list "(*(BIO **)local_d8,"PRINTABLE:\'")" (( "(") (pointer_expression "*(BIO **)local_d8" (* "*") (cast_expression "(BIO **)local_d8" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_d8"))) (, ",") (string_literal ""PRINTABLE:\'"" (" """) (string_content "PRINTABLE:") (escape_sequence "\'") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" (else "else") (compound_statement "{\n              pBVar3 = *(BIO **)local_d8;\n              if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }\n            }" ({ "{") (expression_statement "pBVar3 = *(BIO **)local_d8;" (assignment_expression "pBVar3 = *(BIO **)local_d8" (identifier "pBVar3") (= "=") (pointer_expression "*(BIO **)local_d8" (* "*") (cast_expression "(BIO **)local_d8" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_d8")))) (; ";")) (if_statement "if (iVar5 == 0x14) {\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }\n              else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" (if "if") (parenthesized_expression "(iVar5 == 0x14)" (( "(") (binary_expression "iVar5 == 0x14" (identifier "iVar5") (== "==") (number_literal "0x14")) () ")")) (compound_statement "{\n                BIO_printf(pBVar3,"T61STRING:\'");\n              }" ({ "{") (expression_statement "BIO_printf(pBVar3,"T61STRING:\'");" (call_expression "BIO_printf(pBVar3,"T61STRING:\'")" (identifier "BIO_printf") (argument_list "(pBVar3,"T61STRING:\'")" (( "(") (identifier "pBVar3") (, ",") (string_literal ""T61STRING:\'"" (" """) (string_content "T61STRING:") (escape_sequence "\'") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" (else "else") (if_statement "if (iVar5 == 0x16) {\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }\n              else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" (if "if") (parenthesized_expression "(iVar5 == 0x16)" (( "(") (binary_expression "iVar5 == 0x16" (identifier "iVar5") (== "==") (number_literal "0x16")) () ")")) (compound_statement "{\n                BIO_printf(pBVar3,"IA5STRING:\'");\n              }" ({ "{") (expression_statement "BIO_printf(pBVar3,"IA5STRING:\'");" (call_expression "BIO_printf(pBVar3,"IA5STRING:\'")" (identifier "BIO_printf") (argument_list "(pBVar3,"IA5STRING:\'")" (( "(") (identifier "pBVar3") (, ",") (string_literal ""IA5STRING:\'"" (" """) (string_content "IA5STRING:") (escape_sequence "\'") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" (else "else") (if_statement "if (iVar5 == 0x1c) {\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }\n              else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" (if "if") (parenthesized_expression "(iVar5 == 0x1c)" (( "(") (binary_expression "iVar5 == 0x1c" (identifier "iVar5") (== "==") (number_literal "0x1c")) () ")")) (compound_statement "{\n                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");\n              }" ({ "{") (expression_statement "BIO_printf(pBVar3,"UNIVERSALSTRING:\'");" (call_expression "BIO_printf(pBVar3,"UNIVERSALSTRING:\'")" (identifier "BIO_printf") (argument_list "(pBVar3,"UNIVERSALSTRING:\'")" (( "(") (identifier "pBVar3") (, ",") (string_literal ""UNIVERSALSTRING:\'"" (" """) (string_content "UNIVERSALSTRING:") (escape_sequence "\'") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" (else "else") (compound_statement "{\n                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);\n              }" ({ "{") (expression_statement "BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);" (call_expression "BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5)" (identifier "BIO_printf") (argument_list "(pBVar3,"ASN.1 %2d:\'",iVar5)" (( "(") (identifier "pBVar3") (, ",") (string_literal ""ASN.1 %2d:\'"" (" """) (string_content "ASN.1 %2d:") (escape_sequence "\'") (" """)) (, ",") (identifier "iVar5") () ")"))) (; ";")) (} "}")))))))) (} "}")))) (expression_statement "local_d4 = "^%c";" (assignment_expression "local_d4 = "^%c"" (identifier "local_d4") (= "=") (string_literal ""^%c"" (" """) (string_content "^%c") (" """))) (; ";")) (expression_statement "puVar22 = pAVar7->data;" (assignment_expression "puVar22 = pAVar7->data" (identifier "puVar22") (= "=") (field_expression "pAVar7->data" (identifier "pAVar7") (-> "->") (field_identifier "data"))) (; ";")) (expression_statement "local_d0 = "\\0x%02X";" (assignment_expression "local_d0 = "\\0x%02X"" (identifier "local_d0") (= "=") (string_literal ""\\0x%02X"" (" """) (escape_sequence "\\") (string_content "0x%02X") (" """))) (; ";")) (expression_statement "puVar19 = puVar22 + pAVar7->length;" (assignment_expression "puVar19 = puVar22 + pAVar7->length" (identifier "puVar19") (= "=") (binary_expression "puVar22 + pAVar7->length" (identifier "puVar22") (+ "+") (field_expression "pAVar7->length" (identifier "pAVar7") (-> "->") (field_identifier "length")))) (; ";")) (if_statement "if (0 < pAVar7->length) {\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }" (if "if") (parenthesized_expression "(0 < pAVar7->length)" (( "(") (binary_expression "0 < pAVar7->length" (number_literal "0") (< "<") (field_expression "pAVar7->length" (identifier "pAVar7") (-> "->") (field_identifier "length"))) () ")")) (compound_statement "{\n              do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);\n            }" ({ "{") (do_statement "do {\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              } while (puVar22 != puVar19);" (do "do") (compound_statement "{\n                while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }\n                if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }\n                puVar22 = puVar22 + 1;\n              }" ({ "{") (while_statement "while( true ) {\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                  uVar1 = *puVar22;\n                  local_e0 = (X509 *)(int)(char)uVar1;\n                  pBVar3 = *(BIO **)local_d8;\n                  if (0x5e < (byte)(uVar1 - 0x20)) break;\n                  puVar22 = puVar22 + 1;\n                  BIO_printf(pBVar3,"%c",local_e0);\n                  if (puVar22 == puVar19) goto LAB_0002df49;\n                }" ({ "{") (expression_statement "uVar1 = *puVar22;" (assignment_expression "uVar1 = *puVar22" (identifier "uVar1") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "local_e0 = (X509 *)(int)(char)uVar1;" (assignment_expression "local_e0 = (X509 *)(int)(char)uVar1" (identifier "local_e0") (= "=") (cast_expression "(X509 *)(int)(char)uVar1" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))))) (; ";")) (expression_statement "pBVar3 = *(BIO **)local_d8;" (assignment_expression "pBVar3 = *(BIO **)local_d8" (identifier "pBVar3") (= "=") (pointer_expression "*(BIO **)local_d8" (* "*") (cast_expression "(BIO **)local_d8" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_d8")))) (; ";")) (if_statement "if (0x5e < (byte)(uVar1 - 0x20)) break;" (if "if") (parenthesized_expression "(0x5e < (byte)(uVar1 - 0x20))" (( "(") (binary_expression "0x5e < (byte)(uVar1 - 0x20)" (number_literal "0x5e") (< "<") (call_expression "(byte)(uVar1 - 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar1 - 0x20)" (( "(") (binary_expression "uVar1 - 0x20" (identifier "uVar1") (- "-") (number_literal "0x20")) () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "BIO_printf(pBVar3,"%c",local_e0);" (call_expression "BIO_printf(pBVar3,"%c",local_e0)" (identifier "BIO_printf") (argument_list "(pBVar3,"%c",local_e0)" (( "(") (identifier "pBVar3") (, ",") (string_literal ""%c"" (" """) (string_content "%c") (" """)) (, ",") (identifier "local_e0") () ")"))) (; ";")) (if_statement "if (puVar22 == puVar19) goto LAB_0002df49;" (if "if") (parenthesized_expression "(puVar22 == puVar19)" (( "(") (binary_expression "puVar22 == puVar19" (identifier "puVar22") (== "==") (identifier "puVar19")) () ")")) (goto_statement "goto LAB_0002df49;" (goto "goto") (statement_identifier "LAB_0002df49") (; ";"))) (} "}"))) (if_statement "if ((char)uVar1 < '\0') {\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }\n                else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" (if "if") (parenthesized_expression "((char)uVar1 < '\0')" (( "(") (binary_expression "(char)uVar1 < '\0'" (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  BIO_printf(pBVar3,local_d0,local_e0);\n                }" ({ "{") (expression_statement "BIO_printf(pBVar3,local_d0,local_e0);" (call_expression "BIO_printf(pBVar3,local_d0,local_e0)" (identifier "BIO_printf") (argument_list "(pBVar3,local_d0,local_e0)" (( "(") (identifier "pBVar3") (, ",") (identifier "local_d0") (, ",") (identifier "local_e0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" (else "else") (compound_statement "{\n                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));\n                }" ({ "{") (expression_statement "BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));" (call_expression "BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" (identifier "BIO_printf") (argument_list "(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40))" (( "(") (identifier "pBVar3") (, ",") (identifier "local_d4") (, ",") (cast_expression "(X509_NAME_ENTRY *)((int)local_e0 + 0x40)" (( "(") (type_descriptor "X509_NAME_ENTRY *" (type_identifier "X509_NAME_ENTRY") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_e0 + 0x40)" (( "(") (binary_expression "(int)local_e0 + 0x40" (cast_expression "(int)local_e0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_e0")) (+ "+") (number_literal "0x40")) () ")"))) () ")"))) (; ";")) (} "}")))) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar22 != puVar19)" (( "(") (binary_expression "puVar22 != puVar19" (identifier "puVar22") (!= "!=") (identifier "puVar19")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0002df49:\n            BIO_printf(*(BIO **)local_d8,"\'\n");" (statement_identifier "LAB_0002df49") (: ":") (expression_statement "BIO_printf(*(BIO **)local_d8,"\'\n");" (call_expression "BIO_printf(*(BIO **)local_d8,"\'\n")" (identifier "BIO_printf") (argument_list "(*(BIO **)local_d8,"\'\n")" (( "(") (pointer_expression "*(BIO **)local_d8" (* "*") (cast_expression "(BIO **)local_d8" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_d8"))) (, ",") (string_literal ""\'\n"" (" """) (escape_sequence "\'") (escape_sequence "\n") (" """)) () ")"))) (; ";"))) (} "}")))) (goto_statement "goto LAB_0002dd2b;" (goto "goto") (statement_identifier "LAB_0002dd2b") (; ";")) (} "}"))))) (expression_statement "pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";" (assignment_expression "pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n"" (identifier "pcVar15") (= "=") (string_literal ""\nThe string contains characters that are illegal for the ASN.1 type\n"" (" """) (escape_sequence "\n") (string_content "The string contains characters that are illegal for the ASN.1 type") (escape_sequence "\n") (" """))) (; ";")) (labeled_statement "LAB_0002dde4:\n        BIO_printf(DAT_000c458c,pcVar15);" (statement_identifier "LAB_0002dde4") (: ":") (expression_statement "BIO_printf(DAT_000c458c,pcVar15);" (call_expression "BIO_printf(DAT_000c458c,pcVar15)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,pcVar15)" (( "(") (identifier "DAT_000c458c") (, ",") (identifier "pcVar15") () ")"))) (; ";"))) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" (identifier "local_b8") (= "=") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0002de05;" (goto "goto") (statement_identifier "LAB_0002de05") (; ";")) (} "}"))) (if_statement "if ((iVar5 != 0x30) || (param_13 != 0)) {\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" (if "if") (parenthesized_expression "((iVar5 != 0x30) || (param_13 != 0))" (( "(") (binary_expression "(iVar5 != 0x30) || (param_13 != 0)" (parenthesized_expression "(iVar5 != 0x30)" (( "(") (binary_expression "iVar5 != 0x30" (identifier "iVar5") (!= "!=") (number_literal "0x30")) () ")")) (|| "||") (parenthesized_expression "(param_13 != 0)" (( "(") (binary_expression "param_13 != 0" (identifier "param_13") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        iVar18 = pAVar7->type;\n        if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }\n        if (iVar18 == 0x16) goto LAB_0002ddaf;\nLAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";\n        goto LAB_0002dde4;\n      }" ({ "{") (expression_statement "iVar18 = pAVar7->type;" (assignment_expression "iVar18 = pAVar7->type" (identifier "iVar18") (= "=") (field_expression "pAVar7->type" (identifier "pAVar7") (-> "->") (field_identifier "type"))) (; ";")) (if_statement "if (iVar5 != 0x30) {\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" (if "if") (parenthesized_expression "(iVar5 != 0x30)" (( "(") (binary_expression "iVar5 != 0x30" (identifier "iVar5") (!= "!=") (number_literal "0x30")) () ")")) (compound_statement "{\nLAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;\n          goto LAB_0002dd1c;\n        }" ({ "{") (labeled_statement "LAB_0002dd0e:\n          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;" (statement_identifier "LAB_0002dd0e") (: ":") (if_statement "if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;" (if "if") (parenthesized_expression "((iVar18 != 0x1e) && (iVar18 != 0xc))" (( "(") (binary_expression "(iVar18 != 0x1e) && (iVar18 != 0xc)" (parenthesized_expression "(iVar18 != 0x1e)" (( "(") (binary_expression "iVar18 != 0x1e" (identifier "iVar18") (!= "!=") (number_literal "0x1e")) () ")")) (&& "&&") (parenthesized_expression "(iVar18 != 0xc)" (( "(") (binary_expression "iVar18 != 0xc" (identifier "iVar18") (!= "!=") (number_literal "0xc")) () ")"))) () ")")) (goto_statement "goto LAB_0002ddaf;" (goto "goto") (statement_identifier "LAB_0002ddaf") (; ";")))) (goto_statement "goto LAB_0002dd1c;" (goto "goto") (statement_identifier "LAB_0002dd1c") (; ";")) (} "}"))) (if_statement "if (iVar18 == 0x16) goto LAB_0002ddaf;" (if "if") (parenthesized_expression "(iVar18 == 0x16)" (( "(") (binary_expression "iVar18 == 0x16" (identifier "iVar18") (== "==") (number_literal "0x16")) () ")")) (goto_statement "goto LAB_0002ddaf;" (goto "goto") (statement_identifier "LAB_0002ddaf") (; ";"))) (labeled_statement "LAB_0002dfcf:\n        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";" (statement_identifier "LAB_0002dfcf") (: ":") (expression_statement "pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";" (assignment_expression "pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n"" (identifier "pcVar15") (= "=") (string_literal ""\nemailAddress type needs to be of type IA5STRING\n"" (" """) (escape_sequence "\n") (string_content "emailAddress type needs to be of type IA5STRING") (escape_sequence "\n") (" """))) (; ";"))) (goto_statement "goto LAB_0002dde4;" (goto "goto") (statement_identifier "LAB_0002dde4") (; ";")) (} "}"))) (labeled_statement "LAB_0002dd2b:\n      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" (statement_identifier "LAB_0002dd2b") (: ":") (expression_statement "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);" (assignment_expression "local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1)" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)((int)&local_e4->type + 1)" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&local_e4->type + 1)" (( "(") (binary_expression "(int)&local_e4->type + 1" (cast_expression "(int)&local_e4->type" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_e4->type" (& "&") (field_expression "local_e4->type" (identifier "local_e4") (-> "->") (field_identifier "type")))) (+ "+") (number_literal "1")) () ")")))) (; ";"))) (} "}"))) (expression_statement "local_b8 = X509_NAME_new();" (assignment_expression "local_b8 = X509_NAME_new()" (identifier "local_b8") (= "=") (call_expression "X509_NAME_new()" (identifier "X509_NAME_new") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_b8 == (X509_NAME *)0x0) {\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }\n    else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" (if "if") (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" (( "(") (binary_expression "local_b8 == (X509_NAME *)0x0" (identifier "local_b8") (== "==") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      BIO_printf(DAT_000c458c,"Memory allocation failure\n");\nLAB_0002de05:\n      local_e0 = (X509 *)0x0;\n      local_d8 = (X509_NAME *)0x0;\n      pAVar25 = (ASN1_INTEGER *)0x0;\n      local_e4 = (EVP_PKEY *)0xffffffff;\n    }" ({ "{") (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n");" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n")" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"Memory allocation failure\n")" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""Memory allocation failure\n"" (" """) (string_content "Memory allocation failure") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (labeled_statement "LAB_0002de05:\n      local_e0 = (X509 *)0x0;" (statement_identifier "LAB_0002de05") (: ":") (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" (identifier "local_e0") (= "=") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" (identifier "local_d8") (= "=") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}")) (else_clause "else {\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" (else "else") (compound_statement "{\n      if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }\n      if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n    }" ({ "{") (if_statement "if (param_26 == (X509 *)0x0) {\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }\n      else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" (if "if") (parenthesized_expression "(param_26 == (X509 *)0x0)" (( "(") (binary_expression "param_26 == (X509 *)0x0" (identifier "param_26") (== "==") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pXVar4 = X509_get_subject_name(local_ac);\n        local_d8 = X509_NAME_dup(pXVar4);\n      }" ({ "{") (expression_statement "pXVar4 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar4 = X509_get_subject_name(local_ac)" (identifier "pXVar4") (= "=") (call_expression "X509_get_subject_name(local_ac)" (identifier "X509_get_subject_name") (argument_list "(local_ac)" (( "(") (identifier "local_ac") () ")")))) (; ";")) (expression_statement "local_d8 = X509_NAME_dup(pXVar4);" (assignment_expression "local_d8 = X509_NAME_dup(pXVar4)" (identifier "local_d8") (= "=") (call_expression "X509_NAME_dup(pXVar4)" (identifier "X509_NAME_dup") (argument_list "(pXVar4)" (( "(") (identifier "pXVar4") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        local_d8 = X509_NAME_dup(local_dc);\n      }" (else "else") (compound_statement "{\n        local_d8 = X509_NAME_dup(local_dc);\n      }" ({ "{") (expression_statement "local_d8 = X509_NAME_dup(local_dc);" (assignment_expression "local_d8 = X509_NAME_dup(local_dc)" (identifier "local_d8") (= "=") (call_expression "X509_NAME_dup(local_dc)" (identifier "X509_NAME_dup") (argument_list "(local_dc)" (( "(") (identifier "local_dc") () ")")))) (; ";")) (} "}")))) (if_statement "if (local_d8 == (X509_NAME *)0x0) {\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }\n      else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" (if "if") (parenthesized_expression "(local_d8 == (X509_NAME *)0x0)" (( "(") (binary_expression "local_d8 == (X509_NAME *)0x0" (identifier "local_d8") (== "==") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0002e2c6:\n        local_e0 = (X509 *)0x0;\n        pAVar25 = (ASN1_INTEGER *)0x0;\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" ({ "{") (labeled_statement "LAB_0002e2c6:\n        local_e0 = (X509 *)0x0;" (statement_identifier "LAB_0002e2c6") (: ":") (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" (identifier "local_e0") (= "=") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}")) (else_clause "else {\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" (else "else") (compound_statement "{\n        local_c0 = (byte *)0x7e599;\n        local_d4 = (char *)0x0;\n        local_c4 = (ASN1_STRING *)0x0;\n        local_c8 = (ASN1_STRING *)0x0;\n        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }\n        if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }\n        if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }\n        pXVar11 = X509_new();\n        local_e0 = pXVar11;\n        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;\n        pAVar25 = X509_get_serialNumber(pXVar11);\n        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);\n        if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }\n        local_e4 = (EVP_PKEY *)0xffffffff;\n      }" ({ "{") (expression_statement "local_c0 = (byte *)0x7e599;" (assignment_expression "local_c0 = (byte *)0x7e599" (identifier "local_c0") (= "=") (cast_expression "(byte *)0x7e599" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7e599"))) (; ";")) (expression_statement "local_d4 = (char *)0x0;" (assignment_expression "local_d4 = (char *)0x0" (identifier "local_d4") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_c4 = (ASN1_STRING *)0x0;" (assignment_expression "local_c4 = (ASN1_STRING *)0x0" (identifier "local_c4") (= "=") (cast_expression "(ASN1_STRING *)0x0" (( "(") (type_descriptor "ASN1_STRING *" (type_identifier "ASN1_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_c8 = (ASN1_STRING *)0x0;" (assignment_expression "local_c8 = (ASN1_STRING *)0x0" (identifier "local_c8") (= "=") (cast_expression "(ASN1_STRING *)0x0" (( "(") (type_descriptor "ASN1_STRING *" (type_identifier "ASN1_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (while_statement "while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }" (while "while") (parenthesized_expression "(iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5)" (( "(") (comma_expression "iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5" (assignment_expression "iVar5 = OPENSSL_sk_num(local_cc)" (identifier "iVar5") (= "=") (call_expression "OPENSSL_sk_num(local_cc)" (identifier "OPENSSL_sk_num") (argument_list "(local_cc)" (( "(") (identifier "local_cc") () ")")))) (, ",") (binary_expression "(int)local_d4 < iVar5" (cast_expression "(int)local_d4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d4")) (< "<") (identifier "iVar5"))) () ")")) (compound_statement "{\n          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);\n          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));\n          if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }\n          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);\n          local_bc = (byte *)0x7e5a2;\n          pbVar24 = (byte *)0xffffffff;\nLAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);\n          if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }\n          bVar28 = pbVar24 != (byte *)0xffffffff;\n          bVar31 = pbVar24 == (byte *)0xffffffff;\n          if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }\n          local_d4 = local_d4 + 1;\n        }" ({ "{") (expression_statement "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);" (assignment_expression "local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4)" (identifier "local_d0") (= "=") (cast_expression "(char *)OPENSSL_sk_value(local_cc,local_d4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "OPENSSL_sk_value(local_cc,local_d4)" (identifier "OPENSSL_sk_value") (argument_list "(local_cc,local_d4)" (( "(") (identifier "local_cc") (, ",") (identifier "local_d4") () ")"))))) (; ";")) (expression_statement "iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));" (assignment_expression "iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4))" (identifier "iVar5") (= "=") (call_expression "OBJ_txt2nid(*(char **)(local_d0 + 4))" (identifier "OBJ_txt2nid") (argument_list "(*(char **)(local_d0 + 4))" (( "(") (pointer_expression "*(char **)(local_d0 + 4)" (* "*") (cast_expression "(char **)(local_d0 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 4)" (( "(") (binary_expression "local_d0 + 4" (identifier "local_d0") (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            pbVar21 = *(byte **)(local_d0 + 4);\n            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";\n            goto LAB_0002e2b5;\n          }" ({ "{") (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" (identifier "pbVar21") (= "=") (pointer_expression "*(byte **)(local_d0 + 4)" (* "*") (cast_expression "(byte **)(local_d0 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 4)" (( "(") (binary_expression "local_d0 + 4" (identifier "local_d0") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar15 = "%s:unknown object type in \'policy\' configuration\n";" (assignment_expression "pcVar15 = "%s:unknown object type in \'policy\' configuration\n"" (identifier "pcVar15") (= "=") (string_literal ""%s:unknown object type in \'policy\' configuration\n"" (" """) (string_content "%s:unknown object type in ") (escape_sequence "\'") (string_content "policy") (escape_sequence "\'") (string_content " configuration") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto LAB_0002e2b5;" (goto "goto") (statement_identifier "LAB_0002e2b5") (; ";")) (} "}"))) (expression_statement "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);" (assignment_expression "local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5)" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)OBJ_nid2obj(iVar5)" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "OBJ_nid2obj(iVar5)" (identifier "OBJ_nid2obj") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))))) (; ";")) (expression_statement "local_bc = (byte *)0x7e5a2;" (assignment_expression "local_bc = (byte *)0x7e5a2" (identifier "local_bc") (= "=") (cast_expression "(byte *)0x7e5a2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7e5a2"))) (; ";")) (expression_statement "pbVar24 = (byte *)0xffffffff;" (assignment_expression "pbVar24 = (byte *)0xffffffff" (identifier "pbVar24") (= "=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (labeled_statement "LAB_0002e14e:\n          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" (statement_identifier "LAB_0002e14e") (: ":") (expression_statement "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);" (assignment_expression "pbVar10 = (byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" (identifier "pbVar10") (= "=") (cast_expression "(byte *)X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509_NAME_get_index_by_OBJ\n                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" (identifier "X509_NAME_get_index_by_OBJ") (argument_list "(local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24)" (( "(") (identifier "local_dc") (, ",") (cast_expression "(ASN1_OBJECT *)local_e4" (( "(") (type_descriptor "ASN1_OBJECT *" (type_identifier "ASN1_OBJECT") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_e4")) (, ",") (cast_expression "(int)pbVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar24")) () ")"))))) (; ";"))) (if_statement "if (-1 < (int)pbVar10) {\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" (if "if") (parenthesized_expression "(-1 < (int)pbVar10)" (( "(") (binary_expression "-1 < (int)pbVar10" (number_literal "-1") (< "<") (cast_expression "(int)pbVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar10"))) () ")")) (compound_statement "{\n            uVar27 = auStack_ec < (undefined1 *)0x8;\n            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;\n            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar26 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);\n            bVar28 = false;\n            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;\n            local_e0 = (X509 *)pXVar6;\n            if (bVar31) goto joined_r0x0002efd1;\n            iVar5 = 9;\n            pbVar24 = pbVar21;\n            pbVar26 = local_bc;\n            do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }\n            local_80 = pbVar21;\n            iVar5 = strcmp((char *)pbVar21,"match");\n            pbVar21 = local_80;\n            if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }\n            goto LAB_0002e921;\n          }" ({ "{") (expression_statement "uVar27 = auStack_ec < (undefined1 *)0x8;" (assignment_expression "uVar27 = auStack_ec < (undefined1 *)0x8" (identifier "uVar27") (= "=") (binary_expression "auStack_ec < (undefined1 *)0x8" (identifier "auStack_ec") (< "<") (cast_expression "(undefined1 *)0x8" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x8")))) (; ";")) (expression_statement "uVar30 = &stack0x00000000 == (undefined1 *)0xf4;" (assignment_expression "uVar30 = &stack0x00000000 == (undefined1 *)0xf4" (identifier "uVar30") (= "=") (binary_expression "&stack0x00000000 == (undefined1 *)0xf4" (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (== "==") (cast_expression "(undefined1 *)0xf4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xf4")))) (; ";")) (expression_statement "pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10)" (identifier "pXVar6") (= "=") (call_expression "X509_NAME_get_entry(local_dc,(int)pbVar10)" (identifier "X509_NAME_get_entry") (argument_list "(local_dc,(int)pbVar10)" (( "(") (identifier "local_dc") (, ",") (cast_expression "(int)pbVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar10")) () ")")))) (; ";")) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" (identifier "iVar5") (= "=") (number_literal "9")) (; ";")) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" (identifier "pbVar21") (= "=") (pointer_expression "*(byte **)(local_d0 + 8)" (* "*") (cast_expression "(byte **)(local_d0 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 8)" (( "(") (binary_expression "local_d0 + 8" (identifier "local_d0") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" (identifier "pbVar24") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "pbVar26 = local_c0;" (assignment_expression "pbVar26 = local_c0" (identifier "pbVar26") (= "=") (identifier "local_c0")) (; ";")) (do_statement "do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while ((bool)uVar30);" (do "do") (compound_statement "{\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              uVar27 = *pbVar24 < *pbVar26;\n              uVar30 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar27 = *pbVar24 < *pbVar26;" (assignment_expression "uVar27 = *pbVar24 < *pbVar26" (identifier "uVar27") (= "=") (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (< "<") (pointer_expression "*pbVar26" (* "*") (identifier "pbVar26")))) (; ";")) (expression_statement "uVar30 = *pbVar24 == *pbVar26;" (assignment_expression "uVar30 = *pbVar24 == *pbVar26" (identifier "uVar30") (= "=") (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (== "==") (pointer_expression "*pbVar26" (* "*") (identifier "pbVar26")))) (; ";")) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" (identifier "pbVar24") (= "=") (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" (identifier "pbVar24") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar32 * -2" (identifier "pbVar26") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((bool)uVar30)" (( "(") (cast_expression "(bool)uVar30" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar30")) () ")")) (; ";")) (expression_statement "bVar28 = false;" (assignment_expression "bVar28 = false" (identifier "bVar28") (= "=") (false "false")) (; ";")) (expression_statement "bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;" (assignment_expression "bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27" (identifier "bVar31") (= "=") (binary_expression "(!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27" (parenthesized_expression "(!(bool)uVar27 && !(bool)uVar30)" (( "(") (binary_expression "!(bool)uVar27 && !(bool)uVar30" (unary_expression "!(bool)uVar27" (! "!") (cast_expression "(bool)uVar27" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar27"))) (&& "&&") (unary_expression "!(bool)uVar30" (! "!") (cast_expression "(bool)uVar30" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar30")))) () ")")) (== "==") (cast_expression "(bool)uVar27" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar27")))) (; ";")) (expression_statement "local_e0 = (X509 *)pXVar6;" (assignment_expression "local_e0 = (X509 *)pXVar6" (identifier "local_e0") (= "=") (cast_expression "(X509 *)pXVar6" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pXVar6"))) (; ";")) (if_statement "if (bVar31) goto joined_r0x0002efd1;" (if "if") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")")) (goto_statement "goto joined_r0x0002efd1;" (goto "goto") (statement_identifier "joined_r0x0002efd1") (; ";"))) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" (identifier "iVar5") (= "=") (number_literal "9")) (; ";")) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" (identifier "pbVar24") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "pbVar26 = local_bc;" (assignment_expression "pbVar26 = local_bc" (identifier "pbVar26") (= "=") (identifier "local_bc")) (; ";")) (do_statement "do {\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);" (do "do") (compound_statement "{\n              pbVar23 = pbVar24;\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;\n              bVar28 = *pbVar24 < *pbVar26;\n              bVar31 = *pbVar24 == *pbVar26;\n              pbVar24 = pbVar23;\n              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;\n            }" ({ "{") (expression_statement "pbVar23 = pbVar24;" (assignment_expression "pbVar23 = pbVar24" (identifier "pbVar23") (= "=") (identifier "pbVar24")) (; ";")) (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1" (identifier "pbVar23") (= "=") (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" (identifier "pbVar24") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar28 = *pbVar24 < *pbVar26;" (assignment_expression "bVar28 = *pbVar24 < *pbVar26" (identifier "bVar28") (= "=") (binary_expression "*pbVar24 < *pbVar26" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (< "<") (pointer_expression "*pbVar26" (* "*") (identifier "pbVar26")))) (; ";")) (expression_statement "bVar31 = *pbVar24 == *pbVar26;" (assignment_expression "bVar31 = *pbVar24 == *pbVar26" (identifier "bVar31") (= "=") (binary_expression "*pbVar24 == *pbVar26" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (== "==") (pointer_expression "*pbVar26" (* "*") (identifier "pbVar26")))) (; ";")) (expression_statement "pbVar24 = pbVar23;" (assignment_expression "pbVar24 = pbVar23" (identifier "pbVar24") (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar26 + (uint)bVar32 * -2" (identifier "pbVar26") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")")) (; ";")) (if_statement "if ((!bVar28 && !bVar31) == bVar28) {\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" (if "if") (parenthesized_expression "((!bVar28 && !bVar31) == bVar28)" (( "(") (binary_expression "(!bVar28 && !bVar31) == bVar28" (parenthesized_expression "(!bVar28 && !bVar31)" (( "(") (binary_expression "!bVar28 && !bVar31" (unary_expression "!bVar28" (! "!") (identifier "bVar28")) (&& "&&") (unary_expression "!bVar31" (! "!") (identifier "bVar31"))) () ")")) (== "==") (identifier "bVar28")) () ")")) (compound_statement "{\n              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;\n              goto LAB_0002e236;\n            }" ({ "{") (if_statement "if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;" (if "if") (parenthesized_expression "(pXVar6 != (X509_NAME_ENTRY *)0x0)" (( "(") (binary_expression "pXVar6 != (X509_NAME_ENTRY *)0x0" (identifier "pXVar6") (!= "!=") (cast_expression "(X509_NAME_ENTRY *)0x0" (( "(") (type_descriptor "X509_NAME_ENTRY *" (type_identifier "X509_NAME_ENTRY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002e1ad;" (goto "goto") (statement_identifier "LAB_0002e1ad") (; ";"))) (goto_statement "goto LAB_0002e236;" (goto "goto") (statement_identifier "LAB_0002e236") (; ";")) (} "}"))) (expression_statement "local_80 = pbVar21;" (assignment_expression "local_80 = pbVar21" (identifier "local_80") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "iVar5 = strcmp((char *)pbVar21,"match");" (assignment_expression "iVar5 = strcmp((char *)pbVar21,"match")" (identifier "iVar5") (= "=") (call_expression "strcmp((char *)pbVar21,"match")" (identifier "strcmp") (argument_list "((char *)pbVar21,"match")" (( "(") (cast_expression "(char *)pbVar21" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar21")) (, ",") (string_literal ""match"" (" """) (string_content "match") (" """)) () ")")))) (; ";")) (expression_statement "pbVar21 = local_80;" (assignment_expression "pbVar21 = local_80" (identifier "pbVar21") (= "=") (identifier "local_80")) (; ";")) (if_statement "if (iVar5 == 0) {\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }\n              goto LAB_0002e2a5;\n            }" ({ "{") (if_statement "if (local_e0 != (X509 *)0x0) {\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }" (if "if") (parenthesized_expression "(local_e0 != (X509 *)0x0)" (( "(") (binary_expression "local_e0 != (X509 *)0x0" (identifier "local_e0") (!= "!=") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                iVar5 = -1;\n                local_80 = pbVar10;\n                do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);\n                goto joined_r0x0002efd1;\n              }" ({ "{") (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" (identifier "iVar5") (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_80 = pbVar10;" (assignment_expression "local_80 = pbVar10" (identifier "local_80") (= "=") (identifier "pbVar10")) (; ";")) (do_statement "do {\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                } while (iVar18 != 0);" (do "do") (compound_statement "{\n                  pEVar13 = local_e4;\n                  iVar18 = iVar5;\n                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);\n                  if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }\n                  if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }\n                  pXVar6 = X509_NAME_get_entry(local_d8,loc);\n                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);\n                  local_c8 = pAVar7;\n                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);\n                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);\n                  iVar5 = loc;\n                  pbVar10 = local_80;\n                }" ({ "{") (expression_statement "pEVar13 = local_e4;" (assignment_expression "pEVar13 = local_e4" (identifier "pEVar13") (= "=") (identifier "local_e4")) (; ";")) (expression_statement "iVar18 = iVar5;" (assignment_expression "iVar18 = iVar5" (identifier "iVar18") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);" (assignment_expression "loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" (identifier "loc") (= "=") (call_expression "X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" (identifier "X509_NAME_get_index_by_OBJ") (argument_list "(local_d8,(ASN1_OBJECT *)local_e4,iVar5)" (( "(") (identifier "local_d8") (, ",") (cast_expression "(ASN1_OBJECT *)local_e4" (( "(") (type_descriptor "ASN1_OBJECT *" (type_identifier "ASN1_OBJECT") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_e4")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (if_statement "if ((loc < 0) && (iVar5 == -1)) {\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" (if "if") (parenthesized_expression "((loc < 0) && (iVar5 == -1))" (( "(") (binary_expression "(loc < 0) && (iVar5 == -1)" (parenthesized_expression "(loc < 0)" (( "(") (binary_expression "loc < 0" (identifier "loc") (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 == -1)" (( "(") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n                    pbVar21 = *(byte **)(local_d0 + 4);\n                    pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;\n                    goto LAB_0002e2b5;\n                  }" ({ "{") (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" (identifier "pbVar21") (= "=") (pointer_expression "*(byte **)(local_d0 + 4)" (* "*") (cast_expression "(byte **)(local_d0 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 4)" (( "(") (binary_expression "local_d0 + 4" (identifier "local_d0") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"\n                    ;" (assignment_expression "pcVar15 = \n                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" (identifier "pcVar15") (= "=") (string_literal ""The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"" (" """) (string_content "The %s field does not exist in the CA certificate,") (escape_sequence "\n") (string_content "the ") (escape_sequence "\'") (string_content "policy") (escape_sequence "\'") (string_content " is misconfigured") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto LAB_0002e2b5;" (goto "goto") (statement_identifier "LAB_0002e2b5") (; ";")) (} "}"))) (if_statement "if (loc < 0) {\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" (if "if") (parenthesized_expression "(loc < 0)" (( "(") (binary_expression "loc < 0" (identifier "loc") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    puVar19 = "NULL";\n                    if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }\n                    puVar22 = "NULL";\n                    if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }\n                    BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );\n                    goto LAB_0002e2c6;\n                  }" ({ "{") (expression_statement "puVar19 = "NULL";" (assignment_expression "puVar19 = "NULL"" (identifier "puVar19") (= "=") (string_literal ""NULL"" (" """) (string_content "NULL") (" """))) (; ";")) (if_statement "if (local_c8 != (ASN1_STRING *)0x0) {\n                      puVar19 = local_c8->data;\n                    }" (if "if") (parenthesized_expression "(local_c8 != (ASN1_STRING *)0x0)" (( "(") (binary_expression "local_c8 != (ASN1_STRING *)0x0" (identifier "local_c8") (!= "!=") (cast_expression "(ASN1_STRING *)0x0" (( "(") (type_descriptor "ASN1_STRING *" (type_identifier "ASN1_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      puVar19 = local_c8->data;\n                    }" ({ "{") (expression_statement "puVar19 = local_c8->data;" (assignment_expression "puVar19 = local_c8->data" (identifier "puVar19") (= "=") (field_expression "local_c8->data" (identifier "local_c8") (-> "->") (field_identifier "data"))) (; ";")) (} "}"))) (expression_statement "puVar22 = "NULL";" (assignment_expression "puVar22 = "NULL"" (identifier "puVar22") (= "=") (string_literal ""NULL"" (" """) (string_content "NULL") (" """))) (; ";")) (if_statement "if (local_c4 != (ASN1_STRING *)0x0) {\n                      puVar22 = local_c4->data;\n                    }" (if "if") (parenthesized_expression "(local_c4 != (ASN1_STRING *)0x0)" (( "(") (binary_expression "local_c4 != (ASN1_STRING *)0x0" (identifier "local_c4") (!= "!=") (cast_expression "(ASN1_STRING *)0x0" (( "(") (type_descriptor "ASN1_STRING *" (type_identifier "ASN1_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      puVar22 = local_c4->data;\n                    }" ({ "{") (expression_statement "puVar22 = local_c4->data;" (assignment_expression "puVar22 = local_c4->data" (identifier "puVar22") (= "=") (field_expression "local_c4->data" (identifier "local_c4") (-> "->") (field_identifier "data"))) (; ";")) (} "}"))) (expression_statement "BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              );" (call_expression "BIO_printf(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              )" (identifier "BIO_printf") (argument_list "(DAT_000c458c,\n                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"\n                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23\n                              )" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""The %s field is different between\nCA certificate (%s) and the request (%s)\n"" (" """) (string_content "The %s field is different between") (escape_sequence "\n") (string_content "CA certificate (%s) and the request (%s)") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(local_d0 + 4)" (* "*") (cast_expression "(undefined4 *)(local_d0 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 4)" (( "(") (binary_expression "local_d0 + 4" (identifier "local_d0") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "puVar22") (, ",") (identifier "puVar19") (, ",") (identifier "pEVar13") (, ",") (identifier "iVar18") (, ",") (identifier "pbVar23") () ")"))) (; ";")) (goto_statement "goto LAB_0002e2c6;" (goto "goto") (statement_identifier "LAB_0002e2c6") (; ";")) (} "}"))) (expression_statement "pXVar6 = X509_NAME_get_entry(local_d8,loc);" (assignment_expression "pXVar6 = X509_NAME_get_entry(local_d8,loc)" (identifier "pXVar6") (= "=") (call_expression "X509_NAME_get_entry(local_d8,loc)" (identifier "X509_NAME_get_entry") (argument_list "(local_d8,loc)" (( "(") (identifier "local_d8") (, ",") (identifier "loc") () ")")))) (; ";")) (expression_statement "pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);" (assignment_expression "pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" (identifier "pAVar7") (= "=") (call_expression "X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0)" (identifier "X509_NAME_ENTRY_get_data") (argument_list "((X509_NAME_ENTRY *)local_e0)" (( "(") (cast_expression "(X509_NAME_ENTRY *)local_e0" (( "(") (type_descriptor "X509_NAME_ENTRY *" (type_identifier "X509_NAME_ENTRY") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_e0")) () ")")))) (; ";")) (expression_statement "local_c8 = pAVar7;" (assignment_expression "local_c8 = pAVar7" (identifier "local_c8") (= "=") (identifier "pAVar7")) (; ";")) (expression_statement "local_c4 = X509_NAME_ENTRY_get_data(pXVar6);" (assignment_expression "local_c4 = X509_NAME_ENTRY_get_data(pXVar6)" (identifier "local_c4") (= "=") (call_expression "X509_NAME_ENTRY_get_data(pXVar6)" (identifier "X509_NAME_ENTRY_get_data") (argument_list "(pXVar6)" (( "(") (identifier "pXVar6") () ")")))) (; ";")) (expression_statement "iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);" (assignment_expression "iVar18 = ASN1_STRING_cmp(pAVar7,local_c4)" (identifier "iVar18") (= "=") (call_expression "ASN1_STRING_cmp(pAVar7,local_c4)" (identifier "ASN1_STRING_cmp") (argument_list "(pAVar7,local_c4)" (( "(") (identifier "pAVar7") (, ",") (identifier "local_c4") () ")")))) (; ";")) (expression_statement "iVar5 = loc;" (assignment_expression "iVar5 = loc" (identifier "iVar5") (= "=") (identifier "loc")) (; ";")) (expression_statement "pbVar10 = local_80;" (assignment_expression "pbVar10 = local_80" (identifier "pbVar10") (= "=") (identifier "local_80")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto joined_r0x0002efd1;" (goto "goto") (statement_identifier "joined_r0x0002efd1") (; ";")) (} "}"))) (goto_statement "goto LAB_0002e2a5;" (goto "goto") (statement_identifier "LAB_0002e2a5") (; ";")) (} "}"))) (goto_statement "goto LAB_0002e921;" (goto "goto") (statement_identifier "LAB_0002e921") (; ";")) (} "}"))) (expression_statement "bVar28 = pbVar24 != (byte *)0xffffffff;" (assignment_expression "bVar28 = pbVar24 != (byte *)0xffffffff" (identifier "bVar28") (= "=") (binary_expression "pbVar24 != (byte *)0xffffffff" (identifier "pbVar24") (!= "!=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff")))) (; ";")) (expression_statement "bVar31 = pbVar24 == (byte *)0xffffffff;" (assignment_expression "bVar31 = pbVar24 == (byte *)0xffffffff" (identifier "bVar31") (= "=") (binary_expression "pbVar24 == (byte *)0xffffffff" (identifier "pbVar24") (== "==") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff")))) (; ";")) (if_statement "if (bVar31) {\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" (if "if") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")")) (compound_statement "{\n            iVar5 = 9;\n            pbVar21 = *(byte **)(local_d0 + 8);\n            pbVar24 = pbVar21;\n            pbVar10 = local_c0;\n            do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);\n            bVar29 = false;\n            bVar28 = (!bVar28 && !bVar31) == bVar28;\n            if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }\n          }" ({ "{") (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" (identifier "iVar5") (= "=") (number_literal "9")) (; ";")) (expression_statement "pbVar21 = *(byte **)(local_d0 + 8);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 8)" (identifier "pbVar21") (= "=") (pointer_expression "*(byte **)(local_d0 + 8)" (* "*") (cast_expression "(byte **)(local_d0 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 8)" (( "(") (binary_expression "local_d0 + 8" (identifier "local_d0") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" (identifier "pbVar24") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "pbVar10 = local_c0;" (assignment_expression "pbVar10 = local_c0" (identifier "pbVar10") (= "=") (identifier "local_c0")) (; ";")) (do_statement "do {\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            } while (bVar31);" (do "do") (compound_statement "{\n              if (iVar5 == 0) break;\n              iVar5 = iVar5 + -1;\n              bVar28 = *pbVar24 < *pbVar10;\n              bVar31 = *pbVar24 == *pbVar10;\n              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n            }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar28 = *pbVar24 < *pbVar10;" (assignment_expression "bVar28 = *pbVar24 < *pbVar10" (identifier "bVar28") (= "=") (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar31 = *pbVar24 == *pbVar10;" (assignment_expression "bVar31 = *pbVar24 == *pbVar10" (identifier "bVar31") (= "=") (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" (identifier "pbVar24") (= "=") (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" (identifier "pbVar24") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar31)" (( "(") (identifier "bVar31") () ")")) (; ";")) (expression_statement "bVar29 = false;" (assignment_expression "bVar29 = false" (identifier "bVar29") (= "=") (false "false")) (; ";")) (expression_statement "bVar28 = (!bVar28 && !bVar31) == bVar28;" (assignment_expression "bVar28 = (!bVar28 && !bVar31) == bVar28" (identifier "bVar28") (= "=") (binary_expression "(!bVar28 && !bVar31) == bVar28" (parenthesized_expression "(!bVar28 && !bVar31)" (( "(") (binary_expression "!bVar28 && !bVar31" (unary_expression "!bVar28" (! "!") (identifier "bVar28")) (&& "&&") (unary_expression "!bVar31" (! "!") (identifier "bVar31"))) () ")")) (== "==") (identifier "bVar28"))) (; ";")) (if_statement "if (!bVar28) {\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" (if "if") (parenthesized_expression "(!bVar28)" (( "(") (unary_expression "!bVar28" (! "!") (identifier "bVar28")) () ")")) (compound_statement "{\n              iVar5 = 9;\n              pbVar24 = pbVar21;\n              pbVar10 = (byte *)"supplied";\n              goto code_r0x0002e27e;\n            }" ({ "{") (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" (identifier "iVar5") (= "=") (number_literal "9")) (; ";")) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" (identifier "pbVar24") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "pbVar10 = (byte *)"supplied";" (assignment_expression "pbVar10 = (byte *)"supplied"" (identifier "pbVar10") (= "=") (cast_expression "(byte *)"supplied"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""supplied"" (" """) (string_content "supplied") (" """)))) (; ";")) (goto_statement "goto code_r0x0002e27e;" (goto "goto") (statement_identifier "code_r0x0002e27e") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_d4 = local_d4 + 1;" (assignment_expression "local_d4 = local_d4 + 1" (identifier "local_d4") (= "=") (binary_expression "local_d4 + 1" (identifier "local_d4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (DAT_000c44ec != 0) {\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" (if "if") (parenthesized_expression "(DAT_000c44ec != 0)" (( "(") (binary_expression "DAT_000c44ec != 0" (identifier "DAT_000c44ec") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          X509_NAME_free(local_b8);\n          local_b8 = X509_NAME_dup(local_dc);\n          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;\n        }" ({ "{") (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" (identifier "X509_NAME_free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (expression_statement "local_b8 = X509_NAME_dup(local_dc);" (assignment_expression "local_b8 = X509_NAME_dup(local_dc)" (identifier "local_b8") (= "=") (call_expression "X509_NAME_dup(local_dc)" (identifier "X509_NAME_dup") (argument_list "(local_dc)" (( "(") (identifier "local_dc") () ")")))) (; ";")) (if_statement "if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;" (if "if") (parenthesized_expression "(local_b8 == (X509_NAME *)0x0)" (( "(") (binary_expression "local_b8 == (X509_NAME *)0x0" (identifier "local_b8") (== "==") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002e2c6;" (goto "goto") (statement_identifier "LAB_0002e2c6") (; ";"))) (} "}"))) (if_statement "if (param_18 != 0) {\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" (if "if") (parenthesized_expression "(param_18 != 0)" (( "(") (binary_expression "param_18 != 0" (identifier "param_18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");\n        }" ({ "{") (expression_statement "BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n");" (call_expression "BIO_printf(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n")" (identifier "BIO_printf") (argument_list "(DAT_000c458c,\n                     "Everything appears to be ok, creating and signing the certificate\n")" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""Everything appears to be ok, creating and signing the certificate\n"" (" """) (string_content "Everything appears to be ok, creating and signing the certificate") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "pXVar11 = X509_new();" (assignment_expression "pXVar11 = X509_new()" (identifier "pXVar11") (= "=") (call_expression "X509_new()" (identifier "X509_new") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_e0 = pXVar11;" (assignment_expression "local_e0 = pXVar11" (identifier "local_e0") (= "=") (identifier "pXVar11")) (; ";")) (if_statement "if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;" (if "if") (parenthesized_expression "(pXVar11 == (X509 *)0x0)" (( "(") (binary_expression "pXVar11 == (X509 *)0x0" (identifier "pXVar11") (== "==") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002e84a;" (goto "goto") (statement_identifier "LAB_0002e84a") (; ";"))) (expression_statement "pAVar25 = X509_get_serialNumber(pXVar11);" (assignment_expression "pAVar25 = X509_get_serialNumber(pXVar11)" (identifier "pAVar25") (= "=") (call_expression "X509_get_serialNumber(pXVar11)" (identifier "X509_get_serialNumber") (argument_list "(pXVar11)" (( "(") (identifier "pXVar11") () ")")))) (; ";")) (expression_statement "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);" (assignment_expression "pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25)" (identifier "pAVar25") (= "=") (call_expression "BN_to_ASN1_INTEGER(local_a0,pAVar25)" (identifier "BN_to_ASN1_INTEGER") (argument_list "(local_a0,pAVar25)" (( "(") (identifier "local_a0") (, ",") (identifier "pAVar25") () ")")))) (; ";")) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" (if "if") (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" (( "(") (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" (identifier "pAVar25") (!= "!=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }\n          if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }\nLAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;\n        }" ({ "{") (if_statement "if (param_26 == (X509 *)0x0) {\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }\n          else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" (if "if") (parenthesized_expression "(param_26 == (X509 *)0x0)" (( "(") (binary_expression "param_26 == (X509 *)0x0" (identifier "param_26") (== "==") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            pXVar4 = X509_get_subject_name(local_ac);\n            iVar5 = X509_set_issuer_name(local_e0,pXVar4);\n          }" ({ "{") (expression_statement "pXVar4 = X509_get_subject_name(local_ac);" (assignment_expression "pXVar4 = X509_get_subject_name(local_ac)" (identifier "pXVar4") (= "=") (call_expression "X509_get_subject_name(local_ac)" (identifier "X509_get_subject_name") (argument_list "(local_ac)" (( "(") (identifier "local_ac") () ")")))) (; ";")) (expression_statement "iVar5 = X509_set_issuer_name(local_e0,pXVar4);" (assignment_expression "iVar5 = X509_set_issuer_name(local_e0,pXVar4)" (identifier "iVar5") (= "=") (call_expression "X509_set_issuer_name(local_e0,pXVar4)" (identifier "X509_set_issuer_name") (argument_list "(local_e0,pXVar4)" (( "(") (identifier "local_e0") (, ",") (identifier "pXVar4") () ")")))) (; ";")) (} "}")) (else_clause "else {\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" (else "else") (compound_statement "{\n            iVar5 = X509_set_issuer_name(pXVar11,local_b8);\n          }" ({ "{") (expression_statement "iVar5 = X509_set_issuer_name(pXVar11,local_b8);" (assignment_expression "iVar5 = X509_set_issuer_name(pXVar11,local_b8)" (identifier "iVar5") (= "=") (call_expression "X509_set_issuer_name(pXVar11,local_b8)" (identifier "X509_set_issuer_name") (argument_list "(pXVar11,local_b8)" (( "(") (identifier "pXVar11") (, ",") (identifier "local_b8") () ")")))) (; ";")) (} "}")))) (if_statement "if ((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)) {\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" (if "if") (parenthesized_expression "((iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0))" (( "(") (binary_expression "(iVar5 != 0) &&\n             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0)" (( "(") (comma_expression "pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0" (assignment_expression "pXVar11 = param_16" (identifier "pXVar11") (= "=") (identifier "param_16")) (, ",") (comma_expression "iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),\n             iVar5 != 0" (assignment_expression "iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16)" (identifier "iVar5") (= "=") (call_expression "FUN_00077500(local_e0,local_88,local_98,param_16)" (identifier "FUN_00077500") (argument_list "(local_e0,local_88,local_98,param_16)" (( "(") (identifier "local_e0") (, ",") (identifier "local_88") (, ",") (identifier "local_98") (, ",") (identifier "param_16") () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n            if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }\n            x = local_e0;\n            iVar5 = X509_set_subject_name(local_e0,local_b8);\n            ctx = local_b4;\n            if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }\n          }" ({ "{") (if_statement "if (local_98 != 0) {\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }" (if "if") (parenthesized_expression "(local_98 != 0)" (( "(") (binary_expression "local_98 != 0" (identifier "local_98") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              uVar12 = X509_get0_notAfter(local_e0);\n              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);\n              param_16 = (X509 *)local_70.flags;\n              if (iVar5 == 0) goto LAB_0002e84a;\n            }" ({ "{") (expression_statement "uVar12 = X509_get0_notAfter(local_e0);" (assignment_expression "uVar12 = X509_get0_notAfter(local_e0)" (identifier "uVar12") (= "=") (call_expression "X509_get0_notAfter(local_e0)" (identifier "X509_get0_notAfter") (argument_list "(local_e0)" (( "(") (identifier "local_e0") () ")")))) (; ";")) (expression_statement "iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);" (assignment_expression "iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12)" (identifier "iVar5") (= "=") (call_expression "ASN1_TIME_diff(&local_70,0,0,uVar12)" (identifier "ASN1_TIME_diff") (argument_list "(&local_70,0,0,uVar12)" (( "(") (pointer_expression "&local_70" (& "&") (identifier "local_70")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar12") () ")")))) (; ";")) (expression_statement "param_16 = (X509 *)local_70.flags;" (assignment_expression "param_16 = (X509 *)local_70.flags" (identifier "param_16") (= "=") (cast_expression "(X509 *)local_70.flags" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "local_70.flags" (identifier "local_70") (. ".") (field_identifier "flags")))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_0002e84a;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e84a;" (goto "goto") (statement_identifier "LAB_0002e84a") (; ";"))) (} "}"))) (expression_statement "x = local_e0;" (assignment_expression "x = local_e0" (identifier "x") (= "=") (identifier "local_e0")) (; ";")) (expression_statement "iVar5 = X509_set_subject_name(local_e0,local_b8);" (assignment_expression "iVar5 = X509_set_subject_name(local_e0,local_b8)" (identifier "iVar5") (= "=") (call_expression "X509_set_subject_name(local_e0,local_b8)" (identifier "X509_set_subject_name") (argument_list "(local_e0,local_b8)" (( "(") (identifier "local_e0") (, ",") (identifier "local_b8") () ")")))) (; ";")) (expression_statement "ctx = local_b4;" (assignment_expression "ctx = local_b4" (identifier "ctx") (= "=") (identifier "local_b4")) (; ";")) (if_statement "if (iVar5 != 0) {\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);\n              iVar5 = X509_set_pubkey(x,pEVar13);\n              if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }\n            }" ({ "{") (expression_statement "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);" (assignment_expression "pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" (identifier "pEVar13") (= "=") (cast_expression "(EVP_PKEY *)X509_REQ_get0_pubkey(local_b4)" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509_REQ_get0_pubkey(local_b4)" (identifier "X509_REQ_get0_pubkey") (argument_list "(local_b4)" (( "(") (identifier "local_b4") () ")"))))) (; ";")) (expression_statement "iVar5 = X509_set_pubkey(x,pEVar13);" (assignment_expression "iVar5 = X509_set_pubkey(x,pEVar13)" (identifier "iVar5") (= "=") (call_expression "X509_set_pubkey(x,pEVar13)" (identifier "X509_set_pubkey") (argument_list "(x,pEVar13)" (( "(") (identifier "x") (, ",") (identifier "pEVar13") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }\n                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);\n                if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }\n                iVar5 = X509_get0_extensions(local_e0);\n                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;\n                if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }\n                if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }\n                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);\n                local_e4 = (EVP_PKEY *)0xffffffff;\n                goto LAB_0002e2e5;\n              }" ({ "{") (if_statement "if (local_a8 != (char *)0x0) {\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }" (if "if") (parenthesized_expression "(local_a8 != (char *)0x0)" (( "(") (binary_expression "local_a8 != (char *)0x0" (identifier "local_a8") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }\n                  conf = local_84;\n                  ctx = &local_70;\n                  if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }\n                }" ({ "{") (if_statement "if (param_26 == (X509 *)0x0) {\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }\n                  else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" (if "if") (parenthesized_expression "(param_26 == (X509 *)0x0)" (( "(") (binary_expression "param_26 == (X509 *)0x0" (identifier "param_26") (== "==") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);\n                  }" ({ "{") (expression_statement "X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0);" (call_expression "X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0)" (identifier "X509V3_set_ctx") (argument_list "(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,\n                                   0)" (( "(") (pointer_expression "&local_70" (& "&") (identifier "local_70")) (, ",") (identifier "local_ac") (, ",") (identifier "local_e0") (, ",") (cast_expression "(X509_REQ *)local_b4" (( "(") (type_descriptor "X509_REQ *" (type_identifier "X509_REQ") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_b4")) (, ",") (cast_expression "(X509_CRL *)0x0" (( "(") (type_descriptor "X509_CRL *" (type_identifier "X509_CRL") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" (else "else") (compound_statement "{\n                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);\n                  }" ({ "{") (expression_statement "X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);" (call_expression "X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" (identifier "X509V3_set_ctx") (argument_list "(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0)" (( "(") (pointer_expression "&local_70" (& "&") (identifier "local_70")) (, ",") (identifier "x") (, ",") (identifier "x") (, ",") (cast_expression "(X509_REQ *)ctx" (( "(") (type_descriptor "X509_REQ *" (type_identifier "X509_REQ") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ctx")) (, ",") (cast_expression "(X509_CRL *)0x0" (( "(") (type_descriptor "X509_CRL *" (type_identifier "X509_CRL") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (expression_statement "conf = local_84;" (assignment_expression "conf = local_84" (identifier "conf") (= "=") (identifier "local_84")) (; ";")) (expression_statement "ctx = &local_70;" (assignment_expression "ctx = &local_70" (identifier "ctx") (= "=") (pointer_expression "&local_70" (& "&") (identifier "local_70"))) (; ";")) (if_statement "if (DAT_000c44f0 == (CONF *)0x0) {\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }\n                  else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" (if "if") (parenthesized_expression "(DAT_000c44f0 == (CONF *)0x0)" (( "(") (binary_expression "DAT_000c44f0 == (CONF *)0x0" (identifier "DAT_000c44f0") (== "==") (cast_expression "(CONF *)0x0" (( "(") (type_descriptor "CONF *" (type_identifier "CONF") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    X509V3_set_nconf(ctx,local_84);\n                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);\n                    if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }\n                    pXVar11 = x;\n                    if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }\n                  }" ({ "{") (expression_statement "X509V3_set_nconf(ctx,local_84);" (call_expression "X509V3_set_nconf(ctx,local_84)" (identifier "X509V3_set_nconf") (argument_list "(ctx,local_84)" (( "(") (identifier "ctx") (, ",") (identifier "local_84") () ")"))) (; ";")) (expression_statement "pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);" (assignment_expression "pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" (identifier "pXVar20") (= "=") (cast_expression "(X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0)" (identifier "X509V3_EXT_add_nconf") (argument_list "(conf,ctx,local_a8,local_e0)" (( "(") (identifier "conf") (, ",") (identifier "ctx") (, ",") (identifier "local_a8") (, ",") (identifier "local_e0") () ")"))))) (; ";")) (if_statement "if (pXVar20 == (X509 *)0x0) {\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }" (if "if") (parenthesized_expression "(pXVar20 == (X509 *)0x0)" (( "(") (binary_expression "pXVar20 == (X509 *)0x0" (identifier "pXVar20") (== "==") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);\n                      ERR_print_errors(DAT_000c458c);\n                      goto LAB_0002e84a;\n                    }" ({ "{") (expression_statement "BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04);" (call_expression "BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,\n                                 extraout_EDX_04)" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""ERROR: adding extensions in section %s\n"" (" """) (string_content "ERROR: adding extensions in section %s") (escape_sequence "\n") (" """)) (, ",") (identifier "local_a8") (, ",") (identifier "extraout_EDX_04") () ")"))) (; ";")) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" (identifier "ERR_print_errors") (argument_list "(DAT_000c458c)" (( "(") (identifier "DAT_000c458c") () ")"))) (; ";")) (goto_statement "goto LAB_0002e84a;" (goto "goto") (statement_identifier "LAB_0002e84a") (; ";")) (} "}"))) (expression_statement "pXVar11 = x;" (assignment_expression "pXVar11 = x" (identifier "pXVar11") (= "=") (identifier "x")) (; ";")) (if_statement "if (param_18 != 0) {\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }" (if "if") (parenthesized_expression "(param_18 != 0)" (( "(") (binary_expression "param_18 != 0" (identifier "param_18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);\n                      pXVar11 = pXVar20;\n                    }" ({ "{") (expression_statement "BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20);" (call_expression "BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,\n                                 pXVar20)" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""Successfully added extensions from config\n"" (" """) (string_content "Successfully added extensions from config") (escape_sequence "\n") (" """)) (, ",") (identifier "pXVar20") (, ",") (identifier "pXVar20") () ")"))) (; ";")) (expression_statement "pXVar11 = pXVar20;" (assignment_expression "pXVar11 = pXVar20" (identifier "pXVar11") (= "=") (identifier "pXVar20")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" (else "else") (if_statement "if (param_18 == 0) {\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }\n                  else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" (if "if") (parenthesized_expression "(param_18 == 0)" (( "(") (binary_expression "param_18 == 0" (identifier "param_18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }\n                  }" ({ "{") (expression_statement "X509V3_set_nconf(ctx,DAT_000c44f0);" (call_expression "X509V3_set_nconf(ctx,DAT_000c44f0)" (identifier "X509V3_set_nconf") (argument_list "(ctx,DAT_000c44f0)" (( "(") (identifier "ctx") (, ",") (identifier "DAT_000c44f0") () ")"))) (; ";")) (expression_statement "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);" (assignment_expression "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" (identifier "iVar5") (= "=") (call_expression "X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" (identifier "X509V3_EXT_add_nconf") (argument_list "(DAT_000c44f0,ctx,local_a8,local_e0)" (( "(") (identifier "DAT_000c44f0") (, ",") (identifier "ctx") (, ",") (identifier "local_a8") (, ",") (identifier "local_e0") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      iVar5 = 0;\nLAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);\n                      ERR_print_errors((BIO *)local_e4->type);\n                      goto LAB_0002e84a;\n                    }" ({ "{") (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)&DAT_000c458c" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000c458c" (& "&") (identifier "DAT_000c458c")))) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0002e824:\n                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);" (statement_identifier "LAB_0002e824") (: ":") (expression_statement "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);" (call_expression "BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5)" (identifier "BIO_printf") (argument_list "((BIO *)((ASN1_OBJECT *)local_e4)->sn,\n                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5)" (( "(") (cast_expression "(BIO *)((ASN1_OBJECT *)local_e4)->sn" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "((ASN1_OBJECT *)local_e4)->sn" (parenthesized_expression "((ASN1_OBJECT *)local_e4)" (( "(") (cast_expression "(ASN1_OBJECT *)local_e4" (( "(") (type_descriptor "ASN1_OBJECT *" (type_identifier "ASN1_OBJECT") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_e4")) () ")")) (-> "->") (field_identifier "sn"))) (, ",") (string_literal ""ERROR: adding extensions in section %s\n"" (" """) (string_content "ERROR: adding extensions in section %s") (escape_sequence "\n") (" """)) (, ",") (identifier "local_a8") (, ",") (identifier "iVar5") () ")"))) (; ";"))) (expression_statement "ERR_print_errors((BIO *)local_e4->type);" (call_expression "ERR_print_errors((BIO *)local_e4->type)" (identifier "ERR_print_errors") (argument_list "((BIO *)local_e4->type)" (( "(") (cast_expression "(BIO *)local_e4->type" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "local_e4->type" (identifier "local_e4") (-> "->") (field_identifier "type"))) () ")"))) (; ";")) (goto_statement "goto LAB_0002e84a;" (goto "goto") (statement_identifier "LAB_0002e84a") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" (else "else") (compound_statement "{\n                    local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);\n                    X509V3_set_nconf(ctx,DAT_000c44f0);\n                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);\n                    if (iVar5 == 0) goto LAB_0002e824;\n                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);\n                    pXVar11 = param_26;\n                  }" ({ "{") (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)&DAT_000c458c" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000c458c" (& "&") (identifier "DAT_000c458c")))) (; ";")) (expression_statement "BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0);" (call_expression "BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,\n                               DAT_000c44f0)" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""Extra configuration file found\n"" (" """) (string_content "Extra configuration file found") (escape_sequence "\n") (" """)) (, ",") (identifier "DAT_000c44f0") (, ",") (identifier "DAT_000c44f0") () ")"))) (; ";")) (expression_statement "X509V3_set_nconf(ctx,DAT_000c44f0);" (call_expression "X509V3_set_nconf(ctx,DAT_000c44f0)" (identifier "X509V3_set_nconf") (argument_list "(ctx,DAT_000c44f0)" (( "(") (identifier "ctx") (, ",") (identifier "DAT_000c44f0") () ")"))) (; ";")) (expression_statement "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);" (assignment_expression "iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" (identifier "iVar5") (= "=") (call_expression "X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0)" (identifier "X509V3_EXT_add_nconf") (argument_list "(DAT_000c44f0,ctx,local_a8,local_e0)" (( "(") (identifier "DAT_000c44f0") (, ",") (identifier "ctx") (, ",") (identifier "local_a8") (, ",") (identifier "local_e0") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_0002e824;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e824;" (goto "goto") (statement_identifier "LAB_0002e824") (; ";"))) (expression_statement "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26);" (call_expression "BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26)" (identifier "BIO_printf") (argument_list "((BIO *)local_e4->type,"Successfully added extensions from file.\n",\n                               param_26,param_26)" (( "(") (cast_expression "(BIO *)local_e4->type" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "local_e4->type" (identifier "local_e4") (-> "->") (field_identifier "type"))) (, ",") (string_literal ""Successfully added extensions from file.\n"" (" """) (string_content "Successfully added extensions from file.") (escape_sequence "\n") (" """)) (, ",") (identifier "param_26") (, ",") (identifier "param_26") () ")"))) (; ";")) (expression_statement "pXVar11 = param_26;" (assignment_expression "pXVar11 = param_26" (identifier "pXVar11") (= "=") (identifier "param_26")) (; ";")) (} "}")))))) (} "}"))) (expression_statement "iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);" (assignment_expression "iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11)" (identifier "iVar5") (= "=") (call_expression "FUN_00073a40(local_e0,local_b4,param_25,pXVar11)" (identifier "FUN_00073a40") (argument_list "(local_e0,local_b4,param_25,pXVar11)" (( "(") (identifier "local_e0") (, ",") (identifier "local_b4") (, ",") (identifier "param_25") (, ",") (identifier "pXVar11") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");\n                  ERR_print_errors(DAT_000c458c);\nLAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                  local_e4 = (EVP_PKEY *)0xffffffff;\n                  goto LAB_0002e2e5;\n                }" ({ "{") (expression_statement "BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");" (call_expression "BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n")" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"ERROR: adding extensions from request\n")" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""ERROR: adding extensions from request\n"" (" """) (string_content "ERROR: adding extensions from request") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" (identifier "ERR_print_errors") (argument_list "(DAT_000c458c)" (( "(") (identifier "DAT_000c458c") () ")"))) (; ";")) (labeled_statement "LAB_0002e94f:\n                  pAVar25 = (ASN1_INTEGER *)0x0;" (statement_identifier "LAB_0002e94f") (: ":") (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (goto_statement "goto LAB_0002e2e5;" (goto "goto") (statement_identifier "LAB_0002e2e5") (; ";")) (} "}"))) (expression_statement "iVar5 = X509_get0_extensions(local_e0);" (assignment_expression "iVar5 = X509_get0_extensions(local_e0)" (identifier "iVar5") (= "=") (call_expression "X509_get0_extensions(local_e0)" (identifier "X509_get0_extensions") (argument_list "(local_e0)" (( "(") (identifier "local_e0") () ")")))) (; ";")) (if_statement "if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;" (if "if") (parenthesized_expression "(((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0))" (( "(") (binary_expression "((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&\n                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)" (parenthesized_expression "((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5))" (( "(") (binary_expression "(iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)" (( "(") (comma_expression "iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5" (assignment_expression "iVar5 = OPENSSL_sk_num(iVar5)" (identifier "iVar5") (= "=") (call_expression "OPENSSL_sk_num(iVar5)" (identifier "OPENSSL_sk_num") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")")))) (, ",") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = X509_set_version(local_e0,2), iVar5 == 0)" (( "(") (comma_expression "iVar5 = X509_set_version(local_e0,2), iVar5 == 0" (assignment_expression "iVar5 = X509_set_version(local_e0,2)" (identifier "iVar5") (= "=") (call_expression "X509_set_version(local_e0,2)" (identifier "X509_set_version") (argument_list "(local_e0,2)" (( "(") (identifier "local_e0") (, ",") (number_literal "2") () ")")))) (, ",") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_0002e84a;" (goto "goto") (statement_identifier "LAB_0002e84a") (; ";"))) (if_statement "if (param_18 != 0) {\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }" (if "if") (parenthesized_expression "(param_18 != 0)" (( "(") (binary_expression "param_18 != 0" (identifier "param_18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);\n                }" ({ "{") (expression_statement "BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18);" (call_expression "BIO_printf(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,\n                             "The subject name appears to be ok, checking data base for clashes\n",\n                             param_18,param_18)" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""The subject name appears to be ok, checking data base for clashes\n"" (" """) (string_content "The subject name appears to be ok, checking data base for clashes") (escape_sequence "\n") (" """)) (, ",") (identifier "param_18") (, ",") (identifier "param_18") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_13 == 0) {\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }\n                else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" (if "if") (parenthesized_expression "(param_13 == 0)" (( "(") (binary_expression "param_13 == 0" (identifier "param_13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  ctx = (X509V3_CTX *)0xffffffff;\n                  pXVar4 = X509_NAME_dup(local_b8);\n                  if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }\n                  pAVar25 = (ASN1_INTEGER *)0x0;\n                }" ({ "{") (expression_statement "ctx = (X509V3_CTX *)0xffffffff;" (assignment_expression "ctx = (X509V3_CTX *)0xffffffff" (identifier "ctx") (= "=") (cast_expression "(X509V3_CTX *)0xffffffff" (( "(") (type_descriptor "X509V3_CTX *" (type_identifier "X509V3_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "pXVar4 = X509_NAME_dup(local_b8);" (assignment_expression "pXVar4 = X509_NAME_dup(local_b8)" (identifier "pXVar4") (= "=") (call_expression "X509_NAME_dup(local_b8)" (identifier "X509_NAME_dup") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")")))) (; ";")) (if_statement "if (pXVar4 != (X509_NAME *)0x0) {\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }" (if "if") (parenthesized_expression "(pXVar4 != (X509_NAME *)0x0)" (( "(") (binary_expression "pXVar4 != (X509_NAME *)0x0" (identifier "pXVar4") (!= "!=") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }\n                    iVar5 = X509_set_subject_name(local_e0,pXVar4);\n                    if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }\n                    X509_NAME_free(pXVar4);\n                    goto LAB_0002e636;\n                  }" ({ "{") (while_statement "while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }" (while "while") (parenthesized_expression "(iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5)" (( "(") (comma_expression "iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5" (assignment_expression "iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx)" (identifier "iVar5") (= "=") (call_expression "X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx)" (identifier "X509_NAME_get_index_by_NID") (argument_list "(pXVar4,0x30,(int)ctx)" (( "(") (identifier "pXVar4") (, ",") (number_literal "0x30") (, ",") (cast_expression "(int)ctx" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ctx")) () ")")))) (, ",") (binary_expression "-1 < iVar5" (number_literal "-1") (< "<") (identifier "iVar5"))) () ")")) (compound_statement "{\n                      ctx = (X509V3_CTX *)(iVar5 + -1);\n                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);\n                      X509_NAME_ENTRY_free(pXVar6);\n                    }" ({ "{") (expression_statement "ctx = (X509V3_CTX *)(iVar5 + -1);" (assignment_expression "ctx = (X509V3_CTX *)(iVar5 + -1)" (identifier "ctx") (= "=") (cast_expression "(X509V3_CTX *)(iVar5 + -1)" (( "(") (type_descriptor "X509V3_CTX *" (type_identifier "X509V3_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + -1)" (( "(") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);" (assignment_expression "pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5)" (identifier "pXVar6") (= "=") (call_expression "X509_NAME_delete_entry(pXVar4,iVar5)" (identifier "X509_NAME_delete_entry") (argument_list "(pXVar4,iVar5)" (( "(") (identifier "pXVar4") (, ",") (identifier "iVar5") () ")")))) (; ";")) (expression_statement "X509_NAME_ENTRY_free(pXVar6);" (call_expression "X509_NAME_ENTRY_free(pXVar6)" (identifier "X509_NAME_ENTRY_free") (argument_list "(pXVar6)" (( "(") (identifier "pXVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = X509_set_subject_name(local_e0,pXVar4);" (assignment_expression "iVar5 = X509_set_subject_name(local_e0,pXVar4)" (identifier "iVar5") (= "=") (call_expression "X509_set_subject_name(local_e0,pXVar4)" (identifier "X509_set_subject_name") (argument_list "(local_e0,pXVar4)" (( "(") (identifier "local_e0") (, ",") (identifier "pXVar4") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      X509_NAME_free(pXVar4);\n                      goto LAB_0002e94f;\n                    }" ({ "{") (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" (identifier "X509_NAME_free") (argument_list "(pXVar4)" (( "(") (identifier "pXVar4") () ")"))) (; ";")) (goto_statement "goto LAB_0002e94f;" (goto "goto") (statement_identifier "LAB_0002e94f") (; ";")) (} "}"))) (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" (identifier "X509_NAME_free") (argument_list "(pXVar4)" (( "(") (identifier "pXVar4") () ")"))) (; ";")) (goto_statement "goto LAB_0002e636;" (goto "goto") (statement_identifier "LAB_0002e636") (; ";")) (} "}"))) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" (else "else") (compound_statement "{\nLAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);\n                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);\n                  local_40 = pAVar25;\n                  if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }\n                }" ({ "{") (labeled_statement "LAB_0002e636:\n                  pXVar4 = X509_get_subject_name(local_e0);" (statement_identifier "LAB_0002e636") (: ":") (expression_statement "pXVar4 = X509_get_subject_name(local_e0);" (assignment_expression "pXVar4 = X509_get_subject_name(local_e0)" (identifier "pXVar4") (= "=") (call_expression "X509_get_subject_name(local_e0)" (identifier "X509_get_subject_name") (argument_list "(local_e0)" (( "(") (identifier "local_e0") () ")")))) (; ";"))) (expression_statement "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0)" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0)" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509_NAME_oneline(pXVar4,(char *)0x0,0)" (identifier "X509_NAME_oneline") (argument_list "(pXVar4,(char *)0x0,0)" (( "(") (identifier "pXVar4") (, ",") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "local_40 = pAVar25;" (assignment_expression "local_40 = pAVar25" (identifier "local_40") (= "=") (identifier "pAVar25")) (; ";")) (if_statement "if (pAVar25 != (ASN1_INTEGER *)0x0) {\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" (if "if") (parenthesized_expression "(pAVar25 != (ASN1_INTEGER *)0x0)" (( "(") (binary_expression "pAVar25 != (ASN1_INTEGER *)0x0" (identifier "pAVar25") (!= "!=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    iVar5 = BN_is_zero(local_a0);\n                    if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }\n                    pcVar15 = "../apps/ca.c";\n                    local_48 = pAVar25;\n                    if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }\n                    if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }\n                    if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }\n                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);\n                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);\n                    cVar2 = **ppcVar14;\n                    if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);\n                    uVar12 = extraout_EDX_00;\n                    if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }\n                    pcVar15 = ppcVar14[1];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);\n                    pcVar15 = ppcVar14[3];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);\n                    pcVar15 = ppcVar14[4];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);\n                    pcVar15 = ppcVar14[5];\n                    if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }\n                    pAVar25 = (ASN1_INTEGER *)0x0;\n                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);\n                    local_e4 = (EVP_PKEY *)0xffffffff;\n                    goto LAB_0002e2e5;\n                  }" ({ "{") (expression_statement "iVar5 = BN_is_zero(local_a0);" (assignment_expression "iVar5 = BN_is_zero(local_a0)" (identifier "iVar5") (= "=") (call_expression "BN_is_zero(local_a0)" (identifier "BN_is_zero") (argument_list "(local_a0)" (( "(") (identifier "local_a0") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }\n                    else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);\n                    }" ({ "{") (expression_statement "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0)" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)BN_bn2hex(local_a0)" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "BN_bn2hex(local_a0)" (identifier "BN_bn2hex") (argument_list "(local_a0)" (( "(") (identifier "local_a0") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" (else "else") (compound_statement "{\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);\n                    }" ({ "{") (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8)" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CRYPTO_strdup("00","../apps/ca.c",0x6c8)" (identifier "CRYPTO_strdup") (argument_list "("00","../apps/ca.c",0x6c8)" (( "(") (string_literal ""00"" (" """) (string_content "00") (" """)) (, ",") (string_literal ""../apps/ca.c"" (" """) (string_content "../apps/ca.c") (" """)) (, ",") (number_literal "0x6c8") () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar15 = "../apps/ca.c";" (assignment_expression "pcVar15 = "../apps/ca.c"" (identifier "pcVar15") (= "=") (string_literal ""../apps/ca.c"" (" """) (string_content "../apps/ca.c") (" """))) (; ";")) (expression_statement "local_48 = pAVar25;" (assignment_expression "local_48 = pAVar25" (identifier "local_48") (= "=") (identifier "pAVar25")) (; ";")) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) {\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" (if "if") (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" (( "(") (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" (identifier "pAVar25") (== "==") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);\n                      local_e4 = (EVP_PKEY *)0xffffffff;\n                      goto LAB_0002e2e5;\n                    }" ({ "{") (labeled_statement "LAB_0002eab4:\n                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);" (statement_identifier "LAB_0002eab4") (: ":") (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25)" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""Memory allocation failure\n"" (" """) (string_content "Memory allocation failure") (escape_sequence "\n") (" """)) (, ",") (identifier "pAVar25") (, ",") (identifier "pAVar25") () ")"))) (; ";"))) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (goto_statement "goto LAB_0002e2e5;" (goto "goto") (statement_identifier "LAB_0002e2e5") (; ";")) (} "}"))) (if_statement "if ((char)local_40->length == '\0') {\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" (if "if") (parenthesized_expression "((char)local_40->length == '\0')" (( "(") (binary_expression "(char)local_40->length == '\0'" (cast_expression "(char)local_40->length" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (field_expression "local_40->length" (identifier "local_40") (-> "->") (field_identifier "length"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                      CRYPTO_free(local_40);\n                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;\n                      local_40 = pAVar25;\n                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;\n                    }" ({ "{") (expression_statement "CRYPTO_free(local_40);" (call_expression "CRYPTO_free(local_40)" (identifier "CRYPTO_free") (argument_list "(local_40)" (( "(") (identifier "local_40") () ")"))) (; ";")) (expression_statement "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)\n                      ;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)" (identifier "CRYPTO_strdup") (argument_list "((char *)local_48,"../apps/ca.c",0x6d7)" (( "(") (cast_expression "(char *)local_48" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_48")) (, ",") (string_literal ""../apps/ca.c"" (" """) (string_content "../apps/ca.c") (" """)) (, ",") (number_literal "0x6d7") () ")"))))) (; ";")) (expression_statement "local_40 = pAVar25;" (assignment_expression "local_40 = pAVar25" (identifier "local_40") (= "=") (identifier "pAVar25")) (; ";")) (if_statement "if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;" (if "if") (parenthesized_expression "(pAVar25 == (ASN1_INTEGER *)0x0)" (( "(") (binary_expression "pAVar25 == (ASN1_INTEGER *)0x0" (identifier "pAVar25") (== "==") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002eab4;" (goto "goto") (statement_identifier "LAB_0002eab4") (; ";"))) (} "}"))) (if_statement "if ((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)) {\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }\n                    else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" (if "if") (parenthesized_expression "((*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0))" (( "(") (binary_expression "(*local_8c == 0) ||\n                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" (parenthesized_expression "(*local_8c == 0)" (( "(") (binary_expression "*local_8c == 0" (pointer_expression "*local_8c" (* "*") (identifier "local_8c")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0)" (( "(") (comma_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),\n                       ppcVar14 == (OPENSSL_STRING *)0x0" (assignment_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54)" (identifier "ppcVar14") (= "=") (call_expression "TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54)" (identifier "TXT_DB_get_by_index") (argument_list "((TXT_DB *)*local_a4,5,&local_54)" (( "(") (cast_expression "(TXT_DB *)*local_a4" (( "(") (type_descriptor "TXT_DB *" (type_identifier "TXT_DB") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_a4" (* "*") (identifier "local_a4"))) (, ",") (number_literal "5") (, ",") (pointer_expression "&local_54" (& "&") (identifier "local_54")) () ")")))) (, ",") (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" (identifier "ppcVar14") (== "==") (cast_expression "(OPENSSL_STRING *)0x0" (( "(") (type_descriptor "OPENSSL_STRING *" (type_identifier "OPENSSL_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);\n                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_48;\n                      ppcVar35 = extraout_ECX;\n                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);\n                      pcVar15 = "      check the database/serial_file for corruption\n";\n                    }" ({ "{") (expression_statement "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);" (assignment_expression "ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54)" (identifier "ppcVar14") (= "=") (call_expression "TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54)" (identifier "TXT_DB_get_by_index") (argument_list "((TXT_DB *)*local_a4,3,&local_54)" (( "(") (cast_expression "(TXT_DB *)*local_a4" (( "(") (type_descriptor "TXT_DB *" (type_identifier "TXT_DB") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_a4" (* "*") (identifier "local_a4"))) (, ",") (number_literal "3") (, ",") (pointer_expression "&local_54" (& "&") (identifier "local_54")) () ")")))) (; ";")) (if_statement "if (ppcVar14 == (OPENSSL_STRING *)0x0) {\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" (if "if") (parenthesized_expression "(ppcVar14 == (OPENSSL_STRING *)0x0)" (( "(") (binary_expression "ppcVar14 == (OPENSSL_STRING *)0x0" (identifier "ppcVar14") (== "==") (cast_expression "(OPENSSL_STRING *)0x0" (( "(") (type_descriptor "OPENSSL_STRING *" (type_identifier "OPENSSL_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                        if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }\n                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);\n                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);\n                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);\n                        if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }\n                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);\n                        pAVar25 = (ASN1_INTEGER *)0x0;\n                        if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }\n                        goto LAB_0002e2e5;\n                      }" ({ "{") (if_statement "if (param_24 == 0) {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }\n                        else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" (if "if") (parenthesized_expression "(param_24 == 0)" (( "(") (binary_expression "param_24 == 0" (identifier "param_24") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );\n                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );\n                        }" ({ "{") (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)&DAT_000c458c" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000c458c" (& "&") (identifier "DAT_000c458c")))) (; ";")) (expression_statement "BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    );" (call_expression "BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    )" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX\n                                    )" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""Certificate Details:\n"" (" """) (string_content "Certificate Details:") (escape_sequence "\n") (" """)) (, ",") (identifier "extraout_ECX") (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (expression_statement "iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               );" (assignment_expression "iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" (identifier "iVar5") (= "=") (call_expression "X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" (identifier "X509_print_ex") (argument_list "(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208\n                                               )" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (identifier "local_e0") (, ",") (identifier "param_23") (, ",") (binary_expression "param_22 | 0x208" (identifier "param_22") (| "|") (number_literal "0x208")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" (else "else") (compound_statement "{\n                          local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                          iVar5 = 0;\n                        }" ({ "{") (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)&DAT_000c458c" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000c458c" (& "&") (identifier "DAT_000c458c")))) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,\n                                   iVar5)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""Certificate is to be certified until "" (" """) (string_content "Certificate is to be certified until ") (" """)) (, ",") (identifier "iVar5") (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "a = (ASN1_TIME *)X509_get0_notAfter(local_e0);" (assignment_expression "a = (ASN1_TIME *)X509_get0_notAfter(local_e0)" (identifier "a") (= "=") (cast_expression "(ASN1_TIME *)X509_get0_notAfter(local_e0)" (( "(") (type_descriptor "ASN1_TIME *" (type_identifier "ASN1_TIME") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509_get0_notAfter(local_e0)" (identifier "X509_get0_notAfter") (argument_list "(local_e0)" (( "(") (identifier "local_e0") () ")"))))) (; ";")) (expression_statement "iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);" (assignment_expression "iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a)" (identifier "iVar5") (= "=") (call_expression "ASN1_TIME_print(*(BIO **)local_e4,a)" (identifier "ASN1_TIME_print") (argument_list "(*(BIO **)local_e4,a)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (identifier "a") () ")")))) (; ";")) (if_statement "if (param_16 != (X509 *)0x0) {\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }" (if "if") (parenthesized_expression "(param_16 != (X509 *)0x0)" (( "(") (binary_expression "param_16 != (X509 *)0x0" (identifier "param_16") (!= "!=") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);\n                        }" ({ "{") (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" (identifier "iVar5") (= "=") (call_expression "BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4," (%ld days)",param_16,iVar5)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal "" (%ld days)"" (" """) (string_content " (%ld days)") (" """)) (, ",") (identifier "param_16") (, ",") (identifier "iVar5") () ")")))) (; ";")) (} "}"))) (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5)" (identifier "iVar5") (= "=") (call_expression "BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"\n",iVar5,iVar5)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""\n"" (" """) (escape_sequence "\n") (" """)) (, ",") (identifier "iVar5") (, ",") (identifier "iVar5") () ")")))) (; ";")) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (param_17 == 0) {\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }\n                        else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" (if "if") (parenthesized_expression "(param_17 == 0)" (( "(") (binary_expression "param_17 == 0" (identifier "param_17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);\n                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);\n                          local_3c._3_1_ = 0;\n                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);\n                          if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                        }" ({ "{") (expression_statement "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""Sign the certificate? [y/n]:"" (" """) (string_content "Sign the certificate? [y/n]:") (" """)) (, ",") (identifier "iVar5") (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0)" (identifier "BIO_ctrl") (argument_list "(*(BIO **)local_e4,0xb,0,(void *)0x0)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (number_literal "0xb") (, ",") (number_literal "0") (, ",") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")"))) (; ";")) (expression_statement "local_3c._3_1_ = 0;" (assignment_expression "local_3c._3_1_ = 0" (field_expression "local_3c._3_1_" (identifier "local_3c") (. ".") (field_identifier "_3_1_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94);" (assignment_expression "pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" (identifier "pcVar16") (= "=") (call_expression "fgets((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" (identifier "fgets") (argument_list "((char *)((int)&local_3c + 3),0x19,\n                                          *(FILE **)PTR_stdin_000bdf94)" (( "(") (cast_expression "(char *)((int)&local_3c + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&local_3c + 3)" (( "(") (binary_expression "(int)&local_3c + 3" (cast_expression "(int)&local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_3c" (& "&") (identifier "local_3c"))) (+ "+") (number_literal "3")) () ")"))) (, ",") (number_literal "0x19") (, ",") (pointer_expression "*(FILE **)PTR_stdin_000bdf94" (* "*") (cast_expression "(FILE **)PTR_stdin_000bdf94" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stdin_000bdf94"))) () ")")))) (; ";")) (if_statement "if (pcVar16 == (char *)0x0) {\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }\n                          else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" (if "if") (parenthesized_expression "(pcVar16 == (char *)0x0)" (( "(") (binary_expression "pcVar16 == (char *)0x0" (identifier "pcVar16") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                            pAVar25 = (ASN1_INTEGER *)0x0;\n                            BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" ({ "{") (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,\n                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n"" (" """) (string_content "CERTIFICATE WILL NOT BE CERTIFIED: I/O error") (escape_sequence "\n") (" """)) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0x0" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" (else "else") (compound_statement "{\n                            uVar17 = local_3c._3_1_ & 0xffffffdf;\n                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;\n                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);\n                            local_e4 = (EVP_PKEY *)0x0;\n                          }" ({ "{") (expression_statement "uVar17 = local_3c._3_1_ & 0xffffffdf;" (assignment_expression "uVar17 = local_3c._3_1_ & 0xffffffdf" (identifier "uVar17") (= "=") (binary_expression "local_3c._3_1_ & 0xffffffdf" (field_expression "local_3c._3_1_" (identifier "local_3c") (. ".") (field_identifier "_3_1_")) (& "&") (number_literal "0xffffffdf"))) (; ";")) (if_statement "if ((char)uVar17 == 'Y') goto LAB_0002ebcc;" (if "if") (parenthesized_expression "((char)uVar17 == 'Y')" (( "(") (binary_expression "(char)uVar17 == 'Y'" (cast_expression "(char)uVar17" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar17")) (== "==") (char_literal "'Y'" (' "'") (character "Y") (' "'"))) () ")")) (goto_statement "goto LAB_0002ebcc;" (goto "goto") (statement_identifier "LAB_0002ebcc") (; ";"))) (expression_statement "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17);" (call_expression "BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",\n                                       uVar17,uVar17)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""CERTIFICATE WILL NOT BE CERTIFIED\n"" (" """) (string_content "CERTIFICATE WILL NOT BE CERTIFIED") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar17") (, ",") (identifier "uVar17") () ")"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0x0;" (assignment_expression "local_e4 = (EVP_PKEY *)0x0" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0x0" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" (else "else") (compound_statement "{\nLAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;\n                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);\n                          iVar5 = EVP_PKEY_missing_parameters(local_e4);\n                          if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }\n                          local_d4 = (char *)local_dc;\n                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);\n                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);\n                          local_e4 = (EVP_PKEY *)0xffffffff;\n                          if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }\n                        }" ({ "{") (labeled_statement "LAB_0002ebcc:\n                          local_dc = (X509_NAME *)local_e4;" (statement_identifier "LAB_0002ebcc") (: ":") (expression_statement "local_dc = (X509_NAME *)local_e4;" (assignment_expression "local_dc = (X509_NAME *)local_e4" (identifier "local_dc") (= "=") (cast_expression "(X509_NAME *)local_e4" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_e4"))) (; ";"))) (expression_statement "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);" (assignment_expression "local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0)" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)X509_get0_pubkey(local_e0)" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509_get0_pubkey(local_e0)" (identifier "X509_get0_pubkey") (argument_list "(local_e0)" (( "(") (identifier "local_e0") () ")"))))) (; ";")) (expression_statement "iVar5 = EVP_PKEY_missing_parameters(local_e4);" (assignment_expression "iVar5 = EVP_PKEY_missing_parameters(local_e4)" (identifier "iVar5") (= "=") (call_expression "EVP_PKEY_missing_parameters(local_e4)" (identifier "EVP_PKEY_missing_parameters") (argument_list "(local_e4)" (( "(") (identifier "local_e4") () ")")))) (; ";")) (if_statement "if ((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" (if "if") (parenthesized_expression "((iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0))" (( "(") (binary_expression "(iVar5 != 0) &&\n                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)" (( "(") (comma_expression "iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0" (assignment_expression "iVar5 = EVP_PKEY_missing_parameters(local_9c)" (identifier "iVar5") (= "=") (call_expression "EVP_PKEY_missing_parameters(local_9c)" (identifier "EVP_PKEY_missing_parameters") (argument_list "(local_9c)" (( "(") (identifier "local_9c") () ")")))) (, ",") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                            EVP_PKEY_copy_parameters(local_e4,local_9c);\n                          }" ({ "{") (expression_statement "EVP_PKEY_copy_parameters(local_e4,local_9c);" (call_expression "EVP_PKEY_copy_parameters(local_e4,local_9c)" (identifier "EVP_PKEY_copy_parameters") (argument_list "(local_e4,local_9c)" (( "(") (identifier "local_e4") (, ",") (identifier "local_9c") () ")"))) (; ";")) (} "}"))) (expression_statement "local_d4 = (char *)local_dc;" (assignment_expression "local_d4 = (char *)local_dc" (identifier "local_d4") (= "=") (cast_expression "(char *)local_dc" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_dc"))) (; ";")) (expression_statement "uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);" (assignment_expression "uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90)" (identifier "uVar33") (= "=") (call_expression "FUN_0004e150(local_e0,local_9c,local_94,local_90)" (identifier "FUN_0004e150") (argument_list "(local_e0,local_9c,local_94,local_90)" (( "(") (identifier "local_e0") (, ",") (identifier "local_9c") (, ",") (identifier "local_94") (, ",") (identifier "local_90") () ")")))) (; ";")) (expression_statement "uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);" (assignment_expression "uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20)" (identifier "uVar12") (= "=") (call_expression "(undefined4)((ulonglong)uVar33 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulonglong)uVar33 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar33 >> 0x20" (cast_expression "(ulonglong)uVar33" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar33")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (if_statement "if ((int)uVar33 != 0) {\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" (if "if") (parenthesized_expression "((int)uVar33 != 0)" (( "(") (binary_expression "(int)uVar33 != 0" (cast_expression "(int)uVar33" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar33")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                            uVar34 = 0x742;\n                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);\n                            local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);\n                            local_dc = *(X509_NAME **)local_e4;\n                            local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");\n                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);\n                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;\n                            local_4c = 0;\n                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);\n                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                          }" ({ "{") (expression_statement "uVar34 = 0x742;" (assignment_expression "uVar34 = 0x742" (identifier "uVar34") (= "=") (number_literal "0x742")) (; ";")) (expression_statement "local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);" (assignment_expression "local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742)" (identifier "local_54") (= "=") (call_expression "CRYPTO_strdup("V","../apps/ca.c",0x742)" (identifier "CRYPTO_strdup") (argument_list "("V","../apps/ca.c",0x742)" (( "(") (string_literal ""V"" (" """) (string_content "V") (" """)) (, ",") (string_literal ""../apps/ca.c"" (" """) (string_content "../apps/ca.c") (" """)) (, ",") (number_literal "0x742") () ")")))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);" (assignment_expression "local_e4 = (EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)\n                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12)" (identifier "X509_get0_notAfter") (argument_list "(local_e0,pcVar15,uVar34,uVar12)" (( "(") (identifier "local_e0") (, ",") (identifier "pcVar15") (, ",") (identifier "uVar34") (, ",") (identifier "uVar12") () ")"))))) (; ";")) (expression_statement "local_dc = *(X509_NAME **)local_e4;" (assignment_expression "local_dc = *(X509_NAME **)local_e4" (identifier "local_dc") (= "=") (pointer_expression "*(X509_NAME **)local_e4" (* "*") (cast_expression "(X509_NAME **)local_e4" (( "(") (type_descriptor "X509_NAME **" (type_identifier "X509_NAME") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4")))) (; ";")) (expression_statement "local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate");" (assignment_expression "local_50 = (void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" (identifier "local_50") (= "=") (cast_expression "(void *)FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00073440((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" (identifier "FUN_00073440") (argument_list "((undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1),"row expdate")" (( "(") (cast_expression "(undefined1 *)\n                                                            ((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1)" (( "(") (binary_expression "(int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length + 1" (cast_expression "(int)&((ASN1_INTEGER *)local_dc)->\n                                                                   length" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&((ASN1_INTEGER *)local_dc)->\n                                                                   length" (& "&") (field_expression "((ASN1_INTEGER *)local_dc)->\n                                                                   length" (parenthesized_expression "((ASN1_INTEGER *)local_dc)" (( "(") (cast_expression "(ASN1_INTEGER *)local_dc" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_dc")) () ")")) (-> "->") (field_identifier "length")))) (+ "+") (number_literal "1")) () ")"))) (, ",") (string_literal ""row expdate"" (" """) (string_content "row expdate") (" """)) () ")"))))) (; ";")) (expression_statement "memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);" (call_expression "memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" (identifier "memcpy") (argument_list "(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4)" (( "(") (identifier "local_50") (, ",") (pointer_expression "*(void **)((int)local_e4 + 8)" (* "*") (cast_expression "(void **)((int)local_e4 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_e4 + 8)" (( "(") (binary_expression "(int)local_e4 + 8" (cast_expression "(int)local_e4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_e4")) (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(size_t *)local_e4" (* "*") (cast_expression "(size_t *)local_e4" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_e4"))) () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;" (assignment_expression "*(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0" (pointer_expression "*(undefined1 *)((int)local_50 + *(size_t *)local_e4)" (* "*") (cast_expression "(undefined1 *)((int)local_50 + *(size_t *)local_e4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_50 + *(size_t *)local_e4)" (( "(") (binary_expression "(int)local_50 + *(size_t *)local_e4" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (+ "+") (pointer_expression "*(size_t *)local_e4" (* "*") (cast_expression "(size_t *)local_e4" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_e4")))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);" (assignment_expression "local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748)" (identifier "local_44") (= "=") (call_expression "CRYPTO_strdup("unknown","../apps/ca.c",0x748)" (identifier "CRYPTO_strdup") (argument_list "("unknown","../apps/ca.c",0x748)" (( "(") (string_literal ""unknown"" (" """) (string_content "unknown") (" """)) (, ",") (string_literal ""../apps/ca.c"" (" """) (string_content "../apps/ca.c") (" """)) (, ",") (number_literal "0x748") () ")")))) (; ";")) (if_statement "if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }\n                            else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" (if "if") (parenthesized_expression "((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0))" (( "(") (binary_expression "(((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)" (parenthesized_expression "(((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0))" (( "(") (binary_expression "((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||\n                                (local_44 == (char *)0x0)" (parenthesized_expression "((local_54 == (char *)0x0) || (local_50 == (void *)0x0))" (( "(") (binary_expression "(local_54 == (char *)0x0) || (local_50 == (void *)0x0)" (parenthesized_expression "(local_54 == (char *)0x0)" (( "(") (binary_expression "local_54 == (char *)0x0" (identifier "local_54") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(local_50 == (void *)0x0)" (( "(") (binary_expression "local_50 == (void *)0x0" (identifier "local_50") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_44 == (char *)0x0)" (( "(") (binary_expression "local_44 == (char *)0x0" (identifier "local_44") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_40 == (ASN1_INTEGER *)0x0)" (( "(") (binary_expression "local_40 == (ASN1_INTEGER *)0x0" (identifier "local_40") (== "==") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" ({ "{") (expression_statement "BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44);" (call_expression "BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_d4,"Memory allocation failure\n",local_44,\n                                         local_44)" (( "(") (pointer_expression "*(BIO **)local_d4" (* "*") (cast_expression "(BIO **)local_d4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_d4"))) (, ",") (string_literal ""Memory allocation failure\n"" (" """) (string_content "Memory allocation failure") (escape_sequence "\n") (" """)) (, ",") (identifier "local_44") (, ",") (identifier "local_44") () ")"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}")) (else_clause "else {\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" (else "else") (compound_statement "{\n                              local_e4 = (EVP_PKEY *)local_d4;\n                              pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);\n                              iVar5 = 0;\n                              do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);\n                              pAVar25[1].data = (uchar *)0x0;\n                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);\n                              if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }\n                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);\n                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));\n                              local_e4 = (EVP_PKEY *)0xffffffff;\n                            }" ({ "{") (expression_statement "local_e4 = (EVP_PKEY *)local_d4;" (assignment_expression "local_e4 = (EVP_PKEY *)local_d4" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)local_d4" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_d4"))) (; ";")) (expression_statement "pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44);" (assignment_expression "pAVar25 = (ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44)" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)\n                                        FUN_00073440(0x1c,"row space",local_44,local_44)" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00073440(0x1c,"row space",local_44,local_44)" (identifier "FUN_00073440") (argument_list "(0x1c,"row space",local_44,local_44)" (( "(") (number_literal "0x1c") (, ",") (string_literal ""row space"" (" """) (string_content "row space") (" """)) (, ",") (identifier "local_44") (, ",") (identifier "local_44") () ")"))))) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              } while (iVar5 != 6);" (do "do") (compound_statement "{\n                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];\n                                iVar5 = iVar5 + 1;\n                              }" ({ "{") (expression_statement "(&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];" (assignment_expression "(&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5]" (subscript_expression "(&pAVar25->length)[iVar5]" (parenthesized_expression "(&pAVar25->length)" (( "(") (pointer_expression "&pAVar25->length" (& "&") (field_expression "pAVar25->length" (identifier "pAVar25") (-> "->") (field_identifier "length"))) () ")")) ([ "[") (identifier "iVar5") (] "]")) (= "=") (cast_expression "(int)(&local_54)[iVar5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "(&local_54)[iVar5]" (parenthesized_expression "(&local_54)" (( "(") (pointer_expression "&local_54" (& "&") (identifier "local_54")) () ")")) ([ "[") (identifier "iVar5") (] "]")))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 6)" (( "(") (binary_expression "iVar5 != 6" (identifier "iVar5") (!= "!=") (number_literal "6")) () ")")) (; ";")) (expression_statement "pAVar25[1].data = (uchar *)0x0;" (assignment_expression "pAVar25[1].data = (uchar *)0x0" (field_expression "pAVar25[1].data" (subscript_expression "pAVar25[1]" (identifier "pAVar25") ([ "[") (number_literal "1") (] "]")) (. ".") (field_identifier "data")) (= "=") (cast_expression "(uchar *)0x0" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);" (assignment_expression "iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" (identifier "iVar5") (= "=") (call_expression "TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" (identifier "TXT_DB_insert") (argument_list "((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25)" (( "(") (cast_expression "(TXT_DB *)*local_a4" (( "(") (type_descriptor "TXT_DB *" (type_identifier "TXT_DB") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_a4" (* "*") (identifier "local_a4"))) (, ",") (cast_expression "(OPENSSL_STRING *)pAVar25" (( "(") (type_descriptor "OPENSSL_STRING *" (type_identifier "OPENSSL_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pAVar25")) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                                CRYPTO_free((void *)0x0);\n                                X509_NAME_free(local_d8);\n                                X509_NAME_free(local_b8);\n                                *local_b0 = local_e0;\n                                local_e4 = (EVP_PKEY *)0x1;\n                                goto LAB_0002e343;\n                              }" ({ "{") (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" (identifier "CRYPTO_free") (argument_list "((void *)0x0)" (( "(") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")"))) (; ";")) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" (identifier "X509_NAME_free") (argument_list "(local_d8)" (( "(") (identifier "local_d8") () ")"))) (; ";")) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" (identifier "X509_NAME_free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (expression_statement "*local_b0 = local_e0;" (assignment_expression "*local_b0 = local_e0" (pointer_expression "*local_b0" (* "*") (identifier "local_b0")) (= "=") (identifier "local_e0")) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0x1;" (assignment_expression "local_e4 = (EVP_PKEY *)0x1" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0x1" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (goto_statement "goto LAB_0002e343;" (goto "goto") (statement_identifier "LAB_0002e343") (; ";")) (} "}"))) (expression_statement "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);" (call_expression "BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"failed to update database\n",0,0)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""failed to update database\n"" (" """) (string_content "failed to update database") (escape_sequence "\n") (" """)) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10));" (call_expression "BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10))" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"TXT_DB error number %ld\n",\n                                         *(undefined4 *)(*local_a4 + 0x10))" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""TXT_DB error number %ld\n"" (" """) (string_content "TXT_DB error number %ld") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(*local_a4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(*local_a4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_a4 + 0x10)" (( "(") (binary_expression "*local_a4 + 0x10" (pointer_expression "*local_a4" (* "*") (identifier "local_a4")) (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}")))) (} "}"))) (} "}")))) (goto_statement "goto LAB_0002e2e5;" (goto "goto") (statement_identifier "LAB_0002e2e5") (; ";")) (} "}"))) (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)&DAT_000c458c" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000c458c" (& "&") (identifier "DAT_000c458c")))) (; ";")) (expression_statement "pAVar25 = local_48;" (assignment_expression "pAVar25 = local_48" (identifier "pAVar25") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppcVar35 = extraout_ECX;" (assignment_expression "ppcVar35 = extraout_ECX" (identifier "ppcVar35") (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX);" (call_expression "BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",\n                                 local_48,extraout_ECX)" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""ERROR:Serial number %s has already been issued,\n"" (" """) (string_content "ERROR:Serial number %s has already been issued,") (escape_sequence "\n") (" """)) (, ",") (identifier "local_48") (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (expression_statement "pcVar15 = "      check the database/serial_file for corruption\n";" (assignment_expression "pcVar15 = "      check the database/serial_file for corruption\n"" (identifier "pcVar15") (= "=") (string_literal ""      check the database/serial_file for corruption\n"" (" """) (string_content "      check the database/serial_file for corruption") (escape_sequence "\n") (" """))) (; ";")) (} "}")) (else_clause "else {\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" (else "else") (compound_statement "{\n                      pcVar15 = "ERROR:There is already a certificate for %s\n";\n                      local_e4 = (EVP_PKEY *)&DAT_000c458c;\n                      pAVar25 = local_40;\n                      ppcVar35 = ppcVar14;\n                    }" ({ "{") (expression_statement "pcVar15 = "ERROR:There is already a certificate for %s\n";" (assignment_expression "pcVar15 = "ERROR:There is already a certificate for %s\n"" (identifier "pcVar15") (= "=") (string_literal ""ERROR:There is already a certificate for %s\n"" (" """) (string_content "ERROR:There is already a certificate for %s") (escape_sequence "\n") (" """))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)&DAT_000c458c;" (assignment_expression "local_e4 = (EVP_PKEY *)&DAT_000c458c" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)&DAT_000c458c" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000c458c" (& "&") (identifier "DAT_000c458c")))) (; ";")) (expression_statement "pAVar25 = local_40;" (assignment_expression "pAVar25 = local_40" (identifier "pAVar25") (= "=") (identifier "local_40")) (; ";")) (expression_statement "ppcVar35 = ppcVar14;" (assignment_expression "ppcVar35 = ppcVar14" (identifier "ppcVar35") (= "=") (identifier "ppcVar14")) (; ";")) (} "}")))) (expression_statement "iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);" (assignment_expression "iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" (identifier "iVar5") (= "=") (call_expression "BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (identifier "pcVar15") (, ",") (identifier "pAVar25") (, ",") (identifier "ppcVar35") () ")")))) (; ";")) (expression_statement "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5);" (call_expression "BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"The matching entry has the following details\n",\n                               iVar5,iVar5)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""The matching entry has the following details\n"" (" """) (string_content "The matching entry has the following details") (escape_sequence "\n") (" """)) (, ",") (identifier "iVar5") (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "cVar2 = **ppcVar14;" (assignment_expression "cVar2 = **ppcVar14" (identifier "cVar2") (= "=") (pointer_expression "**ppcVar14" (* "*") (pointer_expression "*ppcVar14" (* "*") (identifier "ppcVar14")))) (; ";")) (if_statement "if (cVar2 == 'E') {\n                      pcVar15 = "Expired";\n                    }\n                    else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" (if "if") (parenthesized_expression "(cVar2 == 'E')" (( "(") (binary_expression "cVar2 == 'E'" (identifier "cVar2") (== "==") (char_literal "'E'" (' "'") (character "E") (' "'"))) () ")")) (compound_statement "{\n                      pcVar15 = "Expired";\n                    }" ({ "{") (expression_statement "pcVar15 = "Expired";" (assignment_expression "pcVar15 = "Expired"" (identifier "pcVar15") (= "=") (string_literal ""Expired"" (" """) (string_content "Expired") (" """))) (; ";")) (} "}")) (else_clause "else if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" (else "else") (if_statement "if (cVar2 == 'R') {\n                      pcVar15 = "Revoked";\n                    }\n                    else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" (if "if") (parenthesized_expression "(cVar2 == 'R')" (( "(") (binary_expression "cVar2 == 'R'" (identifier "cVar2") (== "==") (char_literal "'R'" (' "'") (character "R") (' "'"))) () ")")) (compound_statement "{\n                      pcVar15 = "Revoked";\n                    }" ({ "{") (expression_statement "pcVar15 = "Revoked";" (assignment_expression "pcVar15 = "Revoked"" (identifier "pcVar15") (= "=") (string_literal ""Revoked"" (" """) (string_content "Revoked") (" """))) (; ";")) (} "}")) (else_clause "else if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" (else "else") (if_statement "if (cVar2 == 'V') {\n                      pcVar15 = "Valid";\n                    }\n                    else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" (if "if") (parenthesized_expression "(cVar2 == 'V')" (( "(") (binary_expression "cVar2 == 'V'" (identifier "cVar2") (== "==") (char_literal "'V'" (' "'") (character "V") (' "'"))) () ")")) (compound_statement "{\n                      pcVar15 = "Valid";\n                    }" ({ "{") (expression_statement "pcVar15 = "Valid";" (assignment_expression "pcVar15 = "Valid"" (identifier "pcVar15") (= "=") (string_literal ""Valid"" (" """) (string_content "Valid") (" """))) (; ";")) (} "}")) (else_clause "else {\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" (else "else") (compound_statement "{\n                      pcVar15 = "\ninvalid type, Data base error\n";\n                    }" ({ "{") (expression_statement "pcVar15 = "\ninvalid type, Data base error\n";" (assignment_expression "pcVar15 = "\ninvalid type, Data base error\n"" (identifier "pcVar15") (= "=") (string_literal ""\ninvalid type, Data base error\n"" (" """) (escape_sequence "\n") (string_content "invalid type, Data base error") (escape_sequence "\n") (" """))) (; ";")) (} "}")))))))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);" (call_expression "BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""Type          :%s\n"" (" """) (string_content "Type          :%s") (escape_sequence "\n") (" """)) (, ",") (identifier "pcVar15") (, ",") (identifier "extraout_EDX") () ")"))) (; ";")) (expression_statement "uVar12 = extraout_EDX_00;" (assignment_expression "uVar12 = extraout_EDX_00" (identifier "uVar12") (= "=") (identifier "extraout_EDX_00")) (; ";")) (if_statement "if (**ppcVar14 == 'R') {\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" (if "if") (parenthesized_expression "(**ppcVar14 == 'R')" (( "(") (binary_expression "**ppcVar14 == 'R'" (pointer_expression "**ppcVar14" (* "*") (pointer_expression "*ppcVar14" (* "*") (identifier "ppcVar14"))) (== "==") (char_literal "'R'" (' "'") (character "R") (' "'"))) () ")")) (compound_statement "{\n                      pcVar15 = ppcVar14[1];\n                      if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }\n                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);\n                      uVar12 = extraout_EDX_03;\n                    }" ({ "{") (expression_statement "pcVar15 = ppcVar14[1];" (assignment_expression "pcVar15 = ppcVar14[1]" (identifier "pcVar15") (= "=") (subscript_expression "ppcVar14[1]" (identifier "ppcVar14") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (pcVar15 == (char *)0x0) {\n                        pcVar15 = "undef";\n                      }" (if "if") (parenthesized_expression "(pcVar15 == (char *)0x0)" (( "(") (binary_expression "pcVar15 == (char *)0x0" (identifier "pcVar15") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                        pcVar15 = "undef";\n                      }" ({ "{") (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" (identifier "pcVar15") (= "=") (string_literal ""undef"" (" """) (string_content "undef") (" """))) (; ";")) (} "}"))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);" (call_expression "BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""Was revoked on:%s\n"" (" """) (string_content "Was revoked on:%s") (escape_sequence "\n") (" """)) (, ",") (identifier "pcVar15") (, ",") (identifier "extraout_EDX_00") () ")"))) (; ";")) (expression_statement "uVar12 = extraout_EDX_03;" (assignment_expression "uVar12 = extraout_EDX_03" (identifier "uVar12") (= "=") (identifier "extraout_EDX_03")) (; ";")) (} "}"))) (expression_statement "pcVar15 = ppcVar14[1];" (assignment_expression "pcVar15 = ppcVar14[1]" (identifier "pcVar15") (= "=") (subscript_expression "ppcVar14[1]" (identifier "ppcVar14") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" (if "if") (parenthesized_expression "(pcVar15 == (char *)0x0)" (( "(") (binary_expression "pcVar15 == (char *)0x0" (identifier "pcVar15") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" ({ "{") (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" (identifier "pcVar15") (= "=") (string_literal ""undef"" (" """) (string_content "undef") (" """))) (; ";")) (} "}"))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);" (call_expression "BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""Expires on    :%s\n"" (" """) (string_content "Expires on    :%s") (escape_sequence "\n") (" """)) (, ",") (identifier "pcVar15") (, ",") (identifier "uVar12") () ")"))) (; ";")) (expression_statement "pcVar15 = ppcVar14[3];" (assignment_expression "pcVar15 = ppcVar14[3]" (identifier "pcVar15") (= "=") (subscript_expression "ppcVar14[3]" (identifier "ppcVar14") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" (if "if") (parenthesized_expression "(pcVar15 == (char *)0x0)" (( "(") (binary_expression "pcVar15 == (char *)0x0" (identifier "pcVar15") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" ({ "{") (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" (identifier "pcVar15") (= "=") (string_literal ""undef"" (" """) (string_content "undef") (" """))) (; ";")) (} "}"))) (expression_statement "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);" (call_expression "BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""Serial Number :%s\n"" (" """) (string_content "Serial Number :%s") (escape_sequence "\n") (" """)) (, ",") (identifier "pcVar15") (, ",") (identifier "extraout_EDX_01") () ")"))) (; ";")) (expression_statement "pcVar15 = ppcVar14[4];" (assignment_expression "pcVar15 = ppcVar14[4]" (identifier "pcVar15") (= "=") (subscript_expression "ppcVar14[4]" (identifier "ppcVar14") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" (if "if") (parenthesized_expression "(pcVar15 == (char *)0x0)" (( "(") (binary_expression "pcVar15 == (char *)0x0" (identifier "pcVar15") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" ({ "{") (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" (identifier "pcVar15") (= "=") (string_literal ""undef"" (" """) (string_content "undef") (" """))) (; ";")) (} "}"))) (expression_statement "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);" (call_expression "BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""File name     :%s\n"" (" """) (string_content "File name     :%s") (escape_sequence "\n") (" """)) (, ",") (identifier "pcVar15") (, ",") (identifier "extraout_EDX_02") () ")"))) (; ";")) (expression_statement "pcVar15 = ppcVar14[5];" (assignment_expression "pcVar15 = ppcVar14[5]" (identifier "pcVar15") (= "=") (subscript_expression "ppcVar14[5]" (identifier "ppcVar14") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (pcVar15 == (char *)0x0) {\n                      pcVar15 = "undef";\n                    }" (if "if") (parenthesized_expression "(pcVar15 == (char *)0x0)" (( "(") (binary_expression "pcVar15 == (char *)0x0" (identifier "pcVar15") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      pcVar15 = "undef";\n                    }" ({ "{") (expression_statement "pcVar15 = "undef";" (assignment_expression "pcVar15 = "undef"" (identifier "pcVar15") (= "=") (string_literal ""undef"" (" """) (string_content "undef") (" """))) (; ";")) (} "}"))) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);" (call_expression "BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14)" (identifier "BIO_printf") (argument_list "(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14)" (( "(") (pointer_expression "*(BIO **)local_e4" (* "*") (cast_expression "(BIO **)local_e4" (( "(") (type_descriptor "BIO **" (type_identifier "BIO") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_e4"))) (, ",") (string_literal ""Subject Name  :%s\n"" (" """) (string_content "Subject Name  :%s") (escape_sequence "\n") (" """)) (, ",") (identifier "pcVar15") (, ",") (identifier "ppcVar14") () ")"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (goto_statement "goto LAB_0002e2e5;" (goto "goto") (statement_identifier "LAB_0002e2e5") (; ";")) (} "}"))) (} "}")))) (expression_statement "BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);" (call_expression "BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,"Memory allocation failure\n",ctx,ctx)" (( "(") (identifier "DAT_000c458c") (, ",") (string_literal ""Memory allocation failure\n"" (" """) (string_content "Memory allocation failure") (escape_sequence "\n") (" """)) (, ",") (identifier "ctx") (, ",") (identifier "ctx") () ")"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (goto_statement "goto LAB_0002e2e5;" (goto "goto") (statement_identifier "LAB_0002e2e5") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_0002e84a:\n          pAVar25 = (ASN1_INTEGER *)0x0;" (statement_identifier "LAB_0002e84a") (: ":") (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}"))) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" (else "else") (compound_statement "{\n    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);\n    if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }\n    ERR_print_errors(DAT_000c458c);\n    local_e0 = (X509 *)0x0;\n    local_b8 = (X509_NAME *)0x0;\n    local_d8 = (X509_NAME *)0x0;\n    local_e4 = (EVP_PKEY *)0xffffffff;\n    pAVar25 = (ASN1_INTEGER *)0x0;\n  }" ({ "{") (expression_statement "pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);" (assignment_expression "pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12)" (identifier "pXVar4") (= "=") (cast_expression "(X509_NAME *)FUN_00074ec0(param_10,param_11,param_12)" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00074ec0(param_10,param_11,param_12)" (identifier "FUN_00074ec0") (argument_list "(param_10,param_11,param_12)" (( "(") (identifier "param_10") (, ",") (identifier "param_11") (, ",") (identifier "param_12") () ")"))))) (; ";")) (if_statement "if (pXVar4 != (X509_NAME *)0x0) {\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }" (if "if") (parenthesized_expression "(pXVar4 != (X509_NAME *)0x0)" (( "(") (binary_expression "pXVar4 != (X509_NAME *)0x0" (identifier "pXVar4") (!= "!=") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);\n      X509_NAME_free(pXVar4);\n      goto LAB_0002dcb3;\n    }" ({ "{") (expression_statement "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);" (call_expression "X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4)" (identifier "X509_REQ_set_subject_name") (argument_list "((X509_REQ *)local_b4,pXVar4)" (( "(") (cast_expression "(X509_REQ *)local_b4" (( "(") (type_descriptor "X509_REQ *" (type_identifier "X509_REQ") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_b4")) (, ",") (identifier "pXVar4") () ")"))) (; ";")) (expression_statement "X509_NAME_free(pXVar4);" (call_expression "X509_NAME_free(pXVar4)" (identifier "X509_NAME_free") (argument_list "(pXVar4)" (( "(") (identifier "pXVar4") () ")"))) (; ";")) (goto_statement "goto LAB_0002dcb3;" (goto "goto") (statement_identifier "LAB_0002dcb3") (; ";")) (} "}"))) (expression_statement "ERR_print_errors(DAT_000c458c);" (call_expression "ERR_print_errors(DAT_000c458c)" (identifier "ERR_print_errors") (argument_list "(DAT_000c458c)" (( "(") (identifier "DAT_000c458c") () ")"))) (; ";")) (expression_statement "local_e0 = (X509 *)0x0;" (assignment_expression "local_e0 = (X509 *)0x0" (identifier "local_e0") (= "=") (cast_expression "(X509 *)0x0" (( "(") (type_descriptor "X509 *" (type_identifier "X509") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_b8 = (X509_NAME *)0x0;" (assignment_expression "local_b8 = (X509_NAME *)0x0" (identifier "local_b8") (= "=") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_d8 = (X509_NAME *)0x0;" (assignment_expression "local_d8 = (X509_NAME *)0x0" (identifier "local_d8") (= "=") (cast_expression "(X509_NAME *)0x0" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_e4 = (EVP_PKEY *)0xffffffff;" (assignment_expression "local_e4 = (EVP_PKEY *)0xffffffff" (identifier "local_e4") (= "=") (cast_expression "(EVP_PKEY *)0xffffffff" (( "(") (type_descriptor "EVP_PKEY *" (type_identifier "EVP_PKEY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "pAVar25 = (ASN1_INTEGER *)0x0;" (assignment_expression "pAVar25 = (ASN1_INTEGER *)0x0" (identifier "pAVar25") (= "=") (cast_expression "(ASN1_INTEGER *)0x0" (( "(") (type_descriptor "ASN1_INTEGER *" (type_identifier "ASN1_INTEGER") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (labeled_statement "LAB_0002e2e5:\n  ppcVar14 = &local_54;" (statement_identifier "LAB_0002e2e5") (: ":") (expression_statement "ppcVar14 = &local_54;" (assignment_expression "ppcVar14 = &local_54" (identifier "ppcVar14") (= "=") (pointer_expression "&local_54" (& "&") (identifier "local_54"))) (; ";"))) (expression_statement "local_dc = (X509_NAME *)pAVar25;" (assignment_expression "local_dc = (X509_NAME *)pAVar25" (identifier "local_dc") (= "=") (cast_expression "(X509_NAME *)pAVar25" (( "(") (type_descriptor "X509_NAME *" (type_identifier "X509_NAME") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pAVar25"))) (; ";")) (do_statement "do {\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);" (do "do") (compound_statement "{\n    ppcVar35 = ppcVar14 + 1;\n    CRYPTO_free(*ppcVar14);\n    ppcVar14 = ppcVar35;\n  }" ({ "{") (expression_statement "ppcVar35 = ppcVar14 + 1;" (assignment_expression "ppcVar35 = ppcVar14 + 1" (identifier "ppcVar35") (= "=") (binary_expression "ppcVar14 + 1" (identifier "ppcVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "CRYPTO_free(*ppcVar14);" (call_expression "CRYPTO_free(*ppcVar14)" (identifier "CRYPTO_free") (argument_list "(*ppcVar14)" (( "(") (pointer_expression "*ppcVar14" (* "*") (identifier "ppcVar14")) () ")"))) (; ";")) (expression_statement "ppcVar14 = ppcVar35;" (assignment_expression "ppcVar14 = ppcVar35" (identifier "ppcVar14") (= "=") (identifier "ppcVar35")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((OPENSSL_STRING *)&local_3c != ppcVar35)" (( "(") (binary_expression "(OPENSSL_STRING *)&local_3c != ppcVar35" (cast_expression "(OPENSSL_STRING *)&local_3c" (( "(") (type_descriptor "OPENSSL_STRING *" (type_identifier "OPENSSL_STRING") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_3c" (& "&") (identifier "local_3c"))) (!= "!=") (identifier "ppcVar35")) () ")")) (; ";")) (expression_statement "CRYPTO_free(local_dc);" (call_expression "CRYPTO_free(local_dc)" (identifier "CRYPTO_free") (argument_list "(local_dc)" (( "(") (identifier "local_dc") () ")"))) (; ";")) (expression_statement "X509_NAME_free(local_d8);" (call_expression "X509_NAME_free(local_d8)" (identifier "X509_NAME_free") (argument_list "(local_d8)" (( "(") (identifier "local_d8") () ")"))) (; ";")) (expression_statement "X509_NAME_free(local_b8);" (call_expression "X509_NAME_free(local_b8)" (identifier "X509_NAME_free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (expression_statement "X509_free(local_e0);" (call_expression "X509_free(local_e0)" (identifier "X509_free") (argument_list "(local_e0)" (( "(") (identifier "local_e0") () ")"))) (; ";")) (labeled_statement "LAB_0002e343:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }" (statement_identifier "LAB_0002e343") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_e4;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return local_e4;\n  }" ({ "{") (return_statement "return local_e4;" (return "return") (identifier "local_e4") (; ";")) (} "}")))) (expression_statement "FUN_0007d010();" (call_expression "FUN_0007d010()" (identifier "FUN_0007d010") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "joined_r0x0002efd1:\n  pbVar24 = pbVar10;" (statement_identifier "joined_r0x0002efd1") (: ":") (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" (identifier "pbVar24") (= "=") (identifier "pbVar10")) (; ";"))) (if_statement "if (pXVar6 != (X509_NAME_ENTRY *)0x0) {\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" (if "if") (parenthesized_expression "(pXVar6 != (X509_NAME_ENTRY *)0x0)" (( "(") (binary_expression "pXVar6 != (X509_NAME_ENTRY *)0x0" (identifier "pXVar6") (!= "!=") (cast_expression "(X509_NAME_ENTRY *)0x0" (( "(") (type_descriptor "X509_NAME_ENTRY *" (type_identifier "X509_NAME_ENTRY") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;\n    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);\n    pbVar24 = pbVar10;\n    if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }\n  }" ({ "{") (labeled_statement "LAB_0002e1ad:\n    pbVar21 = (byte *)0xffffffff;" (statement_identifier "LAB_0002e1ad") (: ":") (expression_statement "pbVar21 = (byte *)0xffffffff;" (assignment_expression "pbVar21 = (byte *)0xffffffff" (identifier "pbVar21") (= "=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";"))) (expression_statement "iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);" (assignment_expression "iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0)" (identifier "iVar5") (= "=") (call_expression "X509_NAME_add_entry(local_b8,pXVar6,-1,0)" (identifier "X509_NAME_add_entry") (argument_list "(local_b8,pXVar6,-1,0)" (( "(") (identifier "local_b8") (, ",") (identifier "pXVar6") (, ",") (number_literal "-1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "pbVar24 = pbVar10;" (assignment_expression "pbVar24 = pbVar10" (identifier "pbVar24") (= "=") (identifier "pbVar10")) (; ";")) (if_statement "if (iVar5 == 0) {\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar15 = "Memory allocation failure\n";\n      goto LAB_0002e2b5;\n    }" ({ "{") (expression_statement "pcVar15 = "Memory allocation failure\n";" (assignment_expression "pcVar15 = "Memory allocation failure\n"" (identifier "pcVar15") (= "=") (string_literal ""Memory allocation failure\n"" (" """) (string_content "Memory allocation failure") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto LAB_0002e2b5;" (goto "goto") (statement_identifier "LAB_0002e2b5") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_0002e14e;" (goto "goto") (statement_identifier "LAB_0002e14e") (; ";")) (while_statement "while( true ) {\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar5 = iVar5 + -1;\n    bVar29 = *pbVar24 < *pbVar10;\n    bVar28 = *pbVar24 == *pbVar10;\n    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    if (!bVar28) break;\ncode_r0x0002e27e:\n    if (iVar5 == 0) break;\n  }" ({ "{") (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar29 = *pbVar24 < *pbVar10;" (assignment_expression "bVar29 = *pbVar24 < *pbVar10" (identifier "bVar29") (= "=") (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar28 = *pbVar24 == *pbVar10;" (assignment_expression "bVar28 = *pbVar24 == *pbVar10" (identifier "bVar28") (= "=") (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" (identifier "pbVar24") (= "=") (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" (identifier "pbVar24") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (!bVar28) break;" (if "if") (parenthesized_expression "(!bVar28)" (( "(") (unary_expression "!bVar28" (! "!") (identifier "bVar28")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "code_r0x0002e27e:\n    if (iVar5 == 0) break;" (statement_identifier "code_r0x0002e27e") (: ":") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}"))) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" (identifier "bVar31") (= "=") (false "false")) (; ";")) (expression_statement "bVar28 = (!bVar29 && !bVar28) == bVar29;" (assignment_expression "bVar28 = (!bVar29 && !bVar28) == bVar29" (identifier "bVar28") (= "=") (binary_expression "(!bVar29 && !bVar28) == bVar29" (parenthesized_expression "(!bVar29 && !bVar28)" (( "(") (binary_expression "!bVar29 && !bVar28" (unary_expression "!bVar29" (! "!") (identifier "bVar29")) (&& "&&") (unary_expression "!bVar28" (! "!") (identifier "bVar28"))) () ")")) (== "==") (identifier "bVar29"))) (; ";")) (if_statement "if (bVar28) {\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }\n  else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" (if "if") (parenthesized_expression "(bVar28)" (( "(") (identifier "bVar28") () ")")) (compound_statement "{\nLAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);\n    pcVar15 = "The %s field needed to be supplied and was missing\n";\n  }" ({ "{") (labeled_statement "LAB_0002e236:\n    pbVar21 = *(byte **)(local_d0 + 4);" (statement_identifier "LAB_0002e236") (: ":") (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" (identifier "pbVar21") (= "=") (pointer_expression "*(byte **)(local_d0 + 4)" (* "*") (cast_expression "(byte **)(local_d0 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 4)" (( "(") (binary_expression "local_d0 + 4" (identifier "local_d0") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "pcVar15 = "The %s field needed to be supplied and was missing\n";" (assignment_expression "pcVar15 = "The %s field needed to be supplied and was missing\n"" (identifier "pcVar15") (= "=") (string_literal ""The %s field needed to be supplied and was missing\n"" (" """) (string_content "The %s field needed to be supplied and was missing") (escape_sequence "\n") (" """))) (; ";")) (} "}")) (else_clause "else {\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" (else "else") (compound_statement "{\n    iVar5 = 6;\n    pbVar24 = pbVar21;\n    pbVar10 = (byte *)"match";\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);\n    if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }\n  }" ({ "{") (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" (identifier "iVar5") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar24 = pbVar21;" (assignment_expression "pbVar24 = pbVar21" (identifier "pbVar24") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "pbVar10 = (byte *)"match";" (assignment_expression "pbVar10 = (byte *)"match"" (identifier "pbVar10") (= "=") (cast_expression "(byte *)"match"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""match"" (" """) (string_content "match") (" """)))) (; ";")) (do_statement "do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    } while (bVar28);" (do "do") (compound_statement "{\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar31 = *pbVar24 < *pbVar10;\n      bVar28 = *pbVar24 == *pbVar10;\n      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;\n      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar31 = *pbVar24 < *pbVar10;" (assignment_expression "bVar31 = *pbVar24 < *pbVar10" (identifier "bVar31") (= "=") (binary_expression "*pbVar24 < *pbVar10" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar28 = *pbVar24 == *pbVar10;" (assignment_expression "bVar28 = *pbVar24 == *pbVar10" (identifier "bVar28") (= "=") (binary_expression "*pbVar24 == *pbVar10" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1" (identifier "pbVar24") (= "=") (binary_expression "pbVar24 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar24 + (uint)bVar32 * -2" (identifier "pbVar24") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (uint)bVar32 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar32 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar32")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar28)" (( "(") (identifier "bVar28") () ")")) (; ";")) (if_statement "if ((!bVar31 && !bVar28) == bVar31) {\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }\n    else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" (if "if") (parenthesized_expression "((!bVar31 && !bVar28) == bVar31)" (( "(") (binary_expression "(!bVar31 && !bVar28) == bVar31" (parenthesized_expression "(!bVar31 && !bVar28)" (( "(") (binary_expression "!bVar31 && !bVar28" (unary_expression "!bVar31" (! "!") (identifier "bVar31")) (&& "&&") (unary_expression "!bVar28" (! "!") (identifier "bVar28"))) () ")")) (== "==") (identifier "bVar31")) () ")")) (compound_statement "{\nLAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);\n      pcVar15 = "The mandatory %s field was missing\n";\n    }" ({ "{") (labeled_statement "LAB_0002e2a5:\n      pbVar21 = *(byte **)(local_d0 + 4);" (statement_identifier "LAB_0002e2a5") (: ":") (expression_statement "pbVar21 = *(byte **)(local_d0 + 4);" (assignment_expression "pbVar21 = *(byte **)(local_d0 + 4)" (identifier "pbVar21") (= "=") (pointer_expression "*(byte **)(local_d0 + 4)" (* "*") (cast_expression "(byte **)(local_d0 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 4)" (( "(") (binary_expression "local_d0 + 4" (identifier "local_d0") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "pcVar15 = "The mandatory %s field was missing\n";" (assignment_expression "pcVar15 = "The mandatory %s field was missing\n"" (identifier "pcVar15") (= "=") (string_literal ""The mandatory %s field was missing\n"" (" """) (string_content "The mandatory %s field was missing") (escape_sequence "\n") (" """))) (; ";")) (} "}")) (else_clause "else {\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" (else "else") (compound_statement "{\nLAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";\n    }" ({ "{") (labeled_statement "LAB_0002e921:\n      pcVar15 = "%s:invalid type in \'policy\' configuration\n";" (statement_identifier "LAB_0002e921") (: ":") (expression_statement "pcVar15 = "%s:invalid type in \'policy\' configuration\n";" (assignment_expression "pcVar15 = "%s:invalid type in \'policy\' configuration\n"" (identifier "pcVar15") (= "=") (string_literal ""%s:invalid type in \'policy\' configuration\n"" (" """) (string_content "%s:invalid type in ") (escape_sequence "\'") (string_content "policy") (escape_sequence "\'") (string_content " configuration") (escape_sequence "\n") (" """))) (; ";"))) (} "}")))) (} "}")))) (labeled_statement "LAB_0002e2b5:\n  BIO_printf(DAT_000c458c,pcVar15,pbVar21);" (statement_identifier "LAB_0002e2b5") (: ":") (expression_statement "BIO_printf(DAT_000c458c,pcVar15,pbVar21);" (call_expression "BIO_printf(DAT_000c458c,pcVar15,pbVar21)" (identifier "BIO_printf") (argument_list "(DAT_000c458c,pcVar15,pbVar21)" (( "(") (identifier "DAT_000c458c") (, ",") (identifier "pcVar15") (, ",") (identifier "pbVar21") () ")"))) (; ";"))) (goto_statement "goto LAB_0002e2c6;" (goto "goto") (statement_identifier "LAB_0002e2c6") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: int do_body(X509 * * xret, EVP_PKEY * pkey, X509 * x509, EVP_MD * dgst,
   stack_st_OPENSSL_STRING * sigopts, stack_st_CONF_VALUE * policy, CA_DB * db, BIGNUM * serial,
   char * subj, ulong chtype, int multirdn, int email_dn, char * startdate, char * enddate, long
   days, int batch, int verbose, X509_REQ * req, char * ext_sect, CONF * lconf, ulong certopt, ulong
   nameopt, int default_op, int ext_copy, int selfsign, CA_DB * db) */

int __regparm3
function_1(type_1 **xret,type_2 *pkey,type_1 *x509,type_3 *dgst,type_4 *sigopts,
       type_5 *policy,type_6 *db,type_7 *serial,char *subj,type_8 var_2,int multirdn,
       int email_dn,char *var_15,char *enddate,long days,int var_90,int var_91,type_9 *var_52,
       char *ext_sect,type_10 *lconf,type_8 certopt,type_8 var_88,int default_op,int var_3,
       int selfsign,type_6 *var_28)

{
  type_11 var_24;
  char var_101;
  int var_107;
  type_12 *pBVar4;
  type_10 *conf;
  type_13 *var_76;
  int var_7;
  type_14 *var_42;
  type_15 *pAVar8;
  type_16 *o;
  char *var_21;
  type_17 *var_49;
  type_1 *var_54;
  type_18 uVar12;
  type_2 *pEVar13;
  type_19 *var_86;
  type_20 *a;
  char *var_19;
  type_21 uVar16;
  int var_13;
  int var_45;
  type_11 *var_25;
  type_1 *var_71;
  type_19 *extraout_ECX;
  char *var_20;
  type_18 extraout_EDX;
  type_18 extraout_EDX_00;
  type_18 extraout_EDX_01;
  type_18 extraout_EDX_02;
  type_17 *pbVar21;
  type_18 extraout_EDX_03;
  type_18 extraout_EDX_04;
  type_18 extraout_EDX_05;
  type_11 *var_23;
  type_17 *pbVar23;
  type_17 *var_39;
  type_22 *ctx;
  type_23 *var_57;
  type_17 *var_40;
  type_19 *var_104;
  type_19 *var_105;
  int var_1;
  type_24 uVar29;
  bool var_41;
  bool var_110;
  type_24 uVar32;
  bool var_111;
  type_17 bVar34;
  type_19 pcVar35;
  type_18 uVar36;
  type_19 *ppcVar37;
  type_1 *x;
  type_24 var_38 [8];
  type_2 *local_e4;
  type_1 *var_44;
  type_13 *local_dc;
  type_13 *var_31;
  type_12 **local_d4;
  char *var_35;
  type_5 *local_cc;
  type_15 *var_46;
  type_15 *var_47;
  type_17 *local_c0;
  type_17 *local_bc;
  type_13 *var_27;
  type_22 *local_b4;
  type_1 **local_b0;
  type_1 *local_ac;
  type_10 *var_66;
  type_7 *local_a4;
  type_7 *local_a0;
  type_2 *local_9c;
  char *var_60;
  type_3 *local_94;
  type_4 *local_90;
  type_6 *local_8c;
  char *local_88;
  type_10 *local_84;
  type_17 *local_80;
  int tdays;
  type_19 row [6];
  type_24 local_3c [3];
  char var_18 [25];
  
  bVar34 = 0;
  local_94 = dgst;
  local_90 = sigopts;
  local_88 = enddate;
  local_cc = policy;
  var_60 = (char *)days;
  local_8c = db;
  local_b4 = (type_22 *)ext_sect;
  local_a4 = serial;
  var_66 = lconf;
  local_a0 = (type_7 *)subj;
  local_84 = (type_10 *)certopt;
  var_107 = *(int *)(var_1 + 0x14);
  row[0] = (type_19)0x0;
  row[1] = (type_19)0x0;
  row[2] = (type_19)0x0;
  row[3] = (type_19)0x0;
  row[4] = (type_19)0x0;
  row[5] = (type_19)0x0;
  local_b0 = xret;
  local_ac = (type_1 *)x509;
  local_9c = (type_2 *)pkey;
  if (var_2 == 0) {
LAB_0002dcb3:
    if (var_3 != 0) {
      var_4((type_12 *)bio_err,"The Subject\'s Distinguished Name is as follows\n");
    }
    local_dc = (type_13 *)var_5(local_b4);
    var_31 = (type_13 *)&bio_err;
    local_e4 = (type_2 *)0x0;
    while (var_7 = var_6(local_dc), (int)local_e4 < var_7) {
      var_42 = var_8(local_dc,(int)local_e4);
      pAVar8 = var_9(var_42);
      o = var_10(var_42);
      var_7 = var_11(o);
      if (var_12 != 0) {
        var_13 = pAVar8->type;
        if (var_13 == 0x1c) {
          var_14(pAVar8);
          var_13 = pAVar8->type;
        }
        if (var_13 == 0x16) {
          if (var_7 == 0x30) goto LAB_0002dfb4;
          pAVar8->type = 0x14;
        }
        else {
          if (var_7 != 0x30) goto LAB_0002dd0e;
          if (var_13 == 0x13) {
            pAVar8->type = 0x16;
          }
LAB_0002dfb4:
          if (var_15 == (char *)0x0) goto LAB_0002dd2b;
          if (pAVar8->type != 0x16) goto LAB_0002dfcf;
        }
LAB_0002ddaf:
        var_7 = var_16(pAVar8->data,pAVar8->length);
        if (var_7 == 0x14) {
          if (pAVar8->type == 0x14) goto LAB_0002dd1c;
        }
        else if ((var_7 != 0x16) || (pAVar8->type != 0x13)) {
LAB_0002dd1c:
          if (var_3 != 0) {
            var_7 = var_17(*(type_12 **)var_31,o);
            var_20 = var_18;
            if (0 < 0x16 - var_7) {
              var_20 = var_18 + (0x16 - var_7);
              var_19 = var_18;
              do {
                var_21 = var_19 + 1;
                *var_19 = ' ';
                var_19 = var_21;
              } while (var_20 != var_21);
            }
            var_20[0] = ':';
            var_20[1] = '\0';
            var_22(*(type_12 **)var_31,var_18);
            var_7 = pAVar8->type;
            if (var_7 == 0x13) {
              var_4(*(type_12 **)var_31,"PRINTABLE:\'");
            }
            else {
              pBVar4 = *(type_12 **)var_31;
              if (var_7 == 0x14) {
                var_4(pBVar4,"T61STRING:\'");
              }
              else if (var_7 == 0x16) {
                var_4(pBVar4,"IA5STRING:\'");
              }
              else if (var_7 == 0x1c) {
                var_4(pBVar4,"UNIVERSALSTRING:\'");
              }
              else {
                var_4(pBVar4,"ASN.1 %2d:\'",var_7);
              }
            }
            local_d4 = (type_12 **)&DAT_0007e595;
            var_23 = pAVar8->data;
            var_35 = "\\0x%02X";
            var_25 = var_23 + pAVar8->length;
            if (0 < pAVar8->length) {
              do {
                while( true ) {
                  var_24 = *var_23;
                  var_44 = (type_1 *)(int)(char)var_24;
                  pBVar4 = *(type_12 **)var_31;
                  if (0x5e < (type_17)(var_24 - 0x20)) break;
                  var_23 = var_23 + 1;
                  var_4(pBVar4,"%c",var_44);
                  if (var_23 == var_25) goto LAB_0002df49;
                }
                if ((char)var_24 < '\0') {
                  var_4(pBVar4,var_35,var_44);
                }
                else {
                  var_4(pBVar4,(char *)local_d4,(type_14 *)((int)var_44 + 0x40));
                }
                var_23 = var_23 + 1;
              } while (var_23 != var_25);
            }
LAB_0002df49:
            var_4(*(type_12 **)var_31,"\'\n");
          }
          goto LAB_0002dd2b;
        }
        var_20 = "\nThe string contains characters that are illegal for the ASN.1 type\n";
LAB_0002dde4:
        var_4((type_12 *)bio_err,var_20);
        var_27 = (type_13 *)0x0;
        goto LAB_0002de05;
      }
      if ((var_7 != 0x30) || (var_15 != (char *)0x0)) {
        var_13 = pAVar8->type;
        if (var_7 != 0x30) {
LAB_0002dd0e:
          if ((var_13 != 0x1e) && (var_13 != 0xc)) goto LAB_0002ddaf;
          goto LAB_0002dd1c;
        }
        if (var_13 == 0x16) goto LAB_0002ddaf;
LAB_0002dfcf:
        var_20 = "\nemailAddress type needs to be of type IA5STRING\n";
        goto LAB_0002dde4;
      }
LAB_0002dd2b:
      local_e4 = (type_2 *)((int)&local_e4->type + 1);
    }
    var_27 = var_26();
    if (var_27 == (type_13 *)0x0) {
      var_4((type_12 *)bio_err,"Memory allocation failure\n");
LAB_0002de05:
      var_44 = (type_1 *)0x0;
      var_31 = (type_13 *)0x0;
      var_57 = (type_23 *)0x0;
      local_e4 = (type_2 *)0xffffffff;
    }
    else {
      if (var_28 == (type_6 *)0x0) {
        var_76 = var_29(local_ac);
        var_31 = var_30(var_76);
      }
      else {
        var_31 = var_30(local_dc);
      }
      if (var_31 == (type_13 *)0x0) {
LAB_0002e2c6:
        var_44 = (type_1 *)0x0;
        var_57 = (type_23 *)0x0;
        local_e4 = (type_2 *)0xffffffff;
      }
      else {
        local_c0 = (type_17 *)0x7e599;
        local_d4 = (type_12 **)0x0;
        var_47 = (type_15 *)0x0;
        var_46 = (type_15 *)0x0;
        while (var_7 = var_32(local_cc), (int)local_d4 < var_7) {
          var_35 = (char *)var_33(local_cc,local_d4);
          var_7 = var_34(*(char **)(var_35 + 4));
          if (var_7 == 0) {
            pbVar21 = *(type_17 **)(var_35 + 4);
            var_20 = "%s:unknown object type in \'policy\' configuration\n";
            goto LAB_0002e2b5;
          }
          local_e4 = (type_2 *)var_36(var_7);
          local_bc = (type_17 *)0x7e5a2;
          var_39 = (type_17 *)0xffffffff;
LAB_0002e14e:
          var_49 = (type_17 *)var_37
                                      (local_dc,(type_16 *)local_e4,(int)var_39);
          if (-1 < (int)var_49) {
            uVar29 = var_38 < (type_24 *)0x8;
            uVar32 = &stack0x00000000 == (type_24 *)0xf4;
            var_42 = var_8(local_dc,(int)var_49);
            var_7 = 9;
            pbVar21 = *(type_17 **)(var_35 + 8);
            var_39 = pbVar21;
            var_40 = local_c0;
            do {
              if (var_7 == 0) break;
              var_7 = var_7 + -1;
              uVar29 = *var_39 < *var_40;
              uVar32 = *var_39 == *var_40;
              var_39 = var_39 + (type_21)bVar34 * -2 + 1;
              var_40 = var_40 + (type_21)bVar34 * -2 + 1;
            } while ((bool)uVar32);
            var_41 = false;
            var_111 = (!(bool)uVar29 && !(bool)uVar32) == (bool)uVar29;
            var_44 = (type_1 *)var_42;
            if (var_111) goto joined_r0x0002efd1;
            var_7 = 9;
            var_39 = pbVar21;
            var_40 = local_bc;
            do {
              pbVar23 = var_39;
              if (var_7 == 0) break;
              var_7 = var_7 + -1;
              pbVar23 = var_39 + (type_21)bVar34 * -2 + 1;
              var_41 = *var_39 < *var_40;
              var_111 = *var_39 == *var_40;
              var_39 = pbVar23;
              var_40 = var_40 + (type_21)bVar34 * -2 + 1;
            } while (var_111);
            if ((!var_41 && !var_111) == var_41) {
              if (var_42 != (type_14 *)0x0) goto LAB_0002e1ad;
              goto LAB_0002e236;
            }
            local_80 = pbVar21;
            var_7 = var_43((char *)pbVar21,"match");
            pbVar21 = local_80;
            if (var_7 == 0) {
              if (var_44 != (type_1 *)0x0) {
                var_7 = -1;
                local_80 = var_49;
                do {
                  pEVar13 = local_e4;
                  var_13 = var_7;
                  var_45 = var_37(var_31,(type_16 *)local_e4,var_7);
                  if ((var_45 < 0) && (var_7 == -1)) {
                    pbVar21 = *(type_17 **)(var_35 + 4);
                    var_20 = 
                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"
                    ;
                    goto LAB_0002e2b5;
                  }
                  if (var_45 < 0) {
                    var_25 = "NULL";
                    if (var_46 != (type_15 *)0x0) {
                      var_25 = var_46->data;
                    }
                    var_23 = "NULL";
                    if (var_47 != (type_15 *)0x0) {
                      var_23 = var_47->data;
                    }
                    var_4((type_12 *)bio_err,
                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"
                               ,*(type_18 *)(var_35 + 4),var_23,var_25,pEVar13,var_13,pbVar23
                              );
                    goto LAB_0002e2c6;
                  }
                  var_42 = var_8(var_31,var_45);
                  pAVar8 = var_9((type_14 *)var_44);
                  var_46 = pAVar8;
                  var_47 = var_9(var_42);
                  var_13 = var_48(pAVar8,var_47);
                  var_7 = var_45;
                  var_49 = local_80;
                } while (var_13 != 0);
                goto joined_r0x0002efd1;
              }
              goto LAB_0002e2a5;
            }
            goto LAB_0002e921;
          }
          var_41 = var_39 != (type_17 *)0xffffffff;
          var_111 = var_39 == (type_17 *)0xffffffff;
          if (var_111) {
            var_7 = 9;
            pbVar21 = *(type_17 **)(var_35 + 8);
            var_39 = pbVar21;
            var_49 = local_c0;
            do {
              if (var_7 == 0) break;
              var_7 = var_7 + -1;
              var_41 = *var_39 < *var_49;
              var_111 = *var_39 == *var_49;
              var_39 = var_39 + (type_21)bVar34 * -2 + 1;
              var_49 = var_49 + (type_21)bVar34 * -2 + 1;
            } while (var_111);
            var_110 = false;
            var_41 = (!var_41 && !var_111) == var_41;
            if (!var_41) {
              var_7 = 9;
              var_39 = pbVar21;
              var_49 = (type_17 *)"supplied";
              goto code_r0x0002e27e;
            }
          }
          local_d4 = (type_12 **)((int)local_d4 + 1);
        }
        if (var_50 != 0) {
          var_51(var_27);
          var_27 = var_30(local_dc);
          if (var_27 == (type_13 *)0x0) goto LAB_0002e2c6;
        }
        if (var_52 != (type_9 *)0x0) {
          var_4((type_12 *)bio_err,
                     "Everything appears to be ok, creating and signing the certificate\n");
        }
        var_54 = var_53();
        var_44 = var_54;
        if (var_54 == (type_1 *)0x0) goto LAB_0002e84a;
        var_57 = var_55(var_54);
        var_57 = var_56(local_a0,var_57);
        if (var_57 != (type_23 *)0x0) {
          if (var_28 == (type_6 *)0x0) {
            var_76 = var_29(local_ac);
            var_7 = var_58(var_44,var_76);
          }
          else {
            var_7 = var_58(var_54,var_27);
          }
          if ((var_7 != 0) &&
             (var_54 = (type_1 *)var_90,
             var_7 = var_59((type_1 *)var_44,local_88,var_60,var_90), var_7 != 0)) {
            if (var_60 != (char *)0x0) {
              uVar12 = var_61(var_44);
              var_7 = var_62(&tdays,0,0,uVar12);
              var_90 = tdays;
              if (var_7 == 0) goto LAB_0002e84a;
            }
            x = var_44;
            var_7 = var_63(var_44,var_27);
            ctx = local_b4;
            if (var_7 != 0) {
              pEVar13 = (type_2 *)var_64(local_b4);
              var_7 = var_65(x,pEVar13);
              if (var_7 != 0) {
                if (var_66 != (type_10 *)0x0) {
                  if (var_28 == (type_6 *)0x0) {
                    var_67((type_22 *)&tdays,local_ac,var_44,(type_9 *)local_b4,
                                   (type_25 *)0x0,0);
                  }
                  else {
                    var_67((type_22 *)&tdays,x,x,(type_9 *)ctx,(type_25 *)0x0,0);
                  }
                  conf = local_84;
                  ctx = (type_22 *)&tdays;
                  if (var_68 == (type_10 *)0x0) {
                    var_69(ctx,local_84);
                    var_71 = (type_1 *)var_70(conf,ctx,(char *)var_66,var_44);
                    if (var_71 == (type_1 *)0x0) {
                      var_4((type_12 *)bio_err,"ERROR: adding extensions in section %s\n",var_66,
                                 extraout_EDX_05);
                      var_72((type_12 *)bio_err);
                      goto LAB_0002e84a;
                    }
                    var_54 = x;
                    if (var_52 != (type_9 *)0x0) {
                      var_4((type_12 *)bio_err,"Successfully added extensions from config\n",
                                 var_71,var_71);
                      var_54 = var_71;
                    }
                  }
                  else if (var_52 == (type_9 *)0x0) {
                    var_69(ctx,(type_10 *)var_68);
                    var_7 = var_70((type_10 *)var_68,ctx,(char *)var_66,var_44);
                    if (var_7 == 0) {
                      local_e4 = (type_2 *)&bio_err;
                      var_7 = 0;
LAB_0002e824:
                      var_4((type_12 *)((type_16 *)local_e4)->sn,
                                 "ERROR: adding extensions in section %s\n",var_66,var_7);
                      var_72((type_12 *)local_e4->type);
                      goto LAB_0002e84a;
                    }
                  }
                  else {
                    local_e4 = (type_2 *)&bio_err;
                    var_4((type_12 *)bio_err,"Extra configuration file found\n",var_68,var_68);
                    var_69(ctx,(type_10 *)var_68);
                    var_7 = var_70((type_10 *)var_68,ctx,(char *)var_66,var_44);
                    if (var_7 == 0) goto LAB_0002e824;
                    var_4((type_12 *)local_e4->type,"Successfully added extensions from file.\n",
                               var_28,var_28);
                    var_54 = (type_1 *)var_28;
                  }
                }
                var_7 = var_73((type_1 *)var_44,(type_9 *)local_b4,selfsign);
                if (var_7 == 0) {
                  var_4((type_12 *)bio_err,"ERROR: adding extensions from request\n",selfsign,
                             var_54);
                  var_72((type_12 *)bio_err);
LAB_0002e94f:
                  var_57 = (type_23 *)0x0;
                  local_e4 = (type_2 *)0xffffffff;
                  goto LAB_0002e2e5;
                }
                var_7 = var_74(var_44);
                if (((var_7 != 0) && (var_7 = var_32(var_7), 0 < var_7)) &&
                   (var_7 = var_75(var_44,2), var_7 == 0)) goto LAB_0002e84a;
                if (var_52 != (type_9 *)0x0) {
                  var_4((type_12 *)bio_err,
                             "The subject name appears to be ok, checking data base for clashes\n",
                             var_52,var_52);
                }
                if (var_15 == (char *)0x0) {
                  ctx = (type_22 *)0xffffffff;
                  var_76 = var_30(var_27);
                  if (var_76 != (type_13 *)0x0) {
                    while (var_7 = var_77(var_76,0x30,(int)ctx), -1 < var_7) {
                      ctx = (type_22 *)(var_7 + -1);
                      var_42 = var_78(var_76,var_7);
                      var_79(var_42);
                    }
                    var_7 = var_63(var_44,var_76);
                    if (var_7 == 0) {
                      var_51(var_76);
                      goto LAB_0002e94f;
                    }
                    var_51(var_76);
                    goto LAB_0002e636;
                  }
                  var_57 = (type_23 *)0x0;
                }
                else {
LAB_0002e636:
                  var_76 = var_29(var_44);
                  var_57 = (type_23 *)var_80(var_76,(char *)0x0,0);
                  row[5] = (type_19)var_57;
                  if (var_57 != (type_23 *)0x0) {
                    var_7 = var_81(local_a0);
                    if (var_7 == 0) {
                      var_57 = (type_23 *)var_82(local_a0);
                    }
                    else {
                      var_57 = (type_23 *)var_83("00","../apps/ca.c",0x6c8);
                    }
                    var_20 = "../apps/ca.c";
                    row[3] = (type_19)var_57;
                    if (var_57 == (type_23 *)0x0) {
LAB_0002eab4:
                      var_4((type_12 *)bio_err,"Memory allocation failure\n",var_57,var_57);
                      local_e4 = (type_2 *)0xffffffff;
                      goto LAB_0002e2e5;
                    }
                    if (*row[5] == '\0') {
                      var_84(row[5]);
                      var_57 = (type_23 *)var_83(row[3],"../apps/ca.c",0x6d7);
                      row[5] = (type_19)var_57;
                      if (var_57 == (type_23 *)0x0) goto LAB_0002eab4;
                    }
                    if (((local_8c->attributes).unique_subject == 0) ||
                       (var_86 = var_85(*(type_26 **)local_a4,5,row),
                       var_86 == (type_19 *)0x0)) {
                      var_86 = var_85(*(type_26 **)local_a4,3,row);
                      if (var_86 == (type_19 *)0x0) {
                        if (var_3 == 0) {
                          local_e4 = (type_2 *)&bio_err;
                          var_4((type_12 *)bio_err,"Certificate Details:\n",extraout_ECX,
                                     extraout_ECX);
                          var_7 = var_87(*(type_12 **)local_e4,var_44,default_op,
                                                var_88 | 0x208);
                        }
                        else {
                          local_e4 = (type_2 *)&bio_err;
                          var_7 = 0;
                        }
                        var_4(*(type_12 **)local_e4,"Certificate is to be certified until ",var_7,
                                   var_7);
                        a = (type_20 *)var_61(var_44);
                        var_7 = var_89(*(type_12 **)local_e4,a);
                        if (var_90 != 0) {
                          var_7 = var_4(*(type_12 **)local_e4," (%ld days)",var_90,var_7);
                        }
                        var_7 = var_4(*(type_12 **)local_e4,"\n",var_7,var_7);
                        var_57 = (type_23 *)0x0;
                        if (var_91 == 0) {
                          var_4(*(type_12 **)local_e4,"Sign the certificate? [y/n]:",var_7,var_7);
                          var_92(*(type_12 **)local_e4,0xb,0,(void *)0x0);
                          var_18[0] = '\0';
                          var_19 = var_93(var_18,0x19,*(type_27 **)PTR_stdin_000bdf94);
                          if (var_19 == (char *)0x0) {
                            var_57 = (type_23 *)0x0;
                            var_4(*(type_12 **)local_e4,
                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);
                            local_e4 = (type_2 *)0x0;
                          }
                          else {
                            uVar16 = (type_17)var_18[0] & 0xffffffdf;
                            if ((char)uVar16 == 'Y') goto LAB_0002ebcc;
                            var_4(*(type_12 **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",
                                       uVar16,uVar16);
                            local_e4 = (type_2 *)0x0;
                          }
                        }
                        else {
LAB_0002ebcc:
                          local_dc = (type_13 *)local_e4;
                          local_e4 = (type_2 *)var_94(var_44);
                          var_7 = var_95(local_e4);
                          if ((var_7 != 0) &&
                             (var_7 = var_95(local_9c), var_7 == 0)) {
                            var_96(local_e4,local_9c);
                          }
                          local_d4 = (type_12 **)local_dc;
                          var_7 = var_97((type_1 *)var_44,(type_2 *)local_9c,local_94,
                                               local_90);
                          local_e4 = (type_2 *)0xffffffff;
                          if (var_7 != 0) {
                            uVar36 = 0x742;
                            uVar12 = extraout_EDX_04;
                            row[0] = var_83("V","../apps/ca.c",0x742);
                            local_e4 = (type_2 *)
                                       var_61(var_44,var_20,uVar36,uVar12);
                            local_dc = *(type_13 **)local_e4;
                            row[1] = (type_19)
                                     var_98((int)((int)&((type_23 *)local_dc)->length + 1),
                                                "row expdate");
                            var_99(row[1],*(void **)((int)local_e4 + 8),*(size_t *)local_e4);
                            row[1][*(size_t *)local_e4] = '\0';
                            row[2] = (type_19)0x0;
                            row[4] = var_83("unknown","../apps/ca.c",0x748);
                            if ((((row[0] == (type_19)0x0) || (row[1] == (type_19)0x0)
                                 ) || (row[4] == (char *)0x0)) || (row[5] == (type_19)0x0)) {
                              var_4((type_12 *)*local_d4,"Memory allocation failure\n",row[4],
                                         row[4]);
                              local_e4 = (type_2 *)0xffffffff;
                            }
                            else {
                              local_e4 = (type_2 *)local_d4;
                              var_57 = (type_23 *)var_98(0x1c,"row space");
                              var_7 = 0;
                              do {
                                (&var_57->length)[var_7] = (int)row[var_7];
                                var_7 = var_7 + 1;
                              } while (var_7 != 6);
                              var_57[1].data = (type_11 *)0x0;
                              var_7 = var_100(*(type_26 **)local_a4,(type_19 *)var_57);
                              if (var_7 != 0) {
                                var_84((void *)0x0);
                                var_51(var_31);
                                var_51(var_27);
                                *local_b0 = (type_1 *)var_44;
                                local_e4 = (type_2 *)0x1;
                                goto LAB_0002e343;
                              }
                              var_4(*(type_12 **)local_e4,"failed to update database\n",0,0);
                              var_4(*(type_12 **)local_e4,"TXT_DB error number %ld\n",
                                         *(type_18 *)(*(int *)local_a4 + 0x10));
                              local_e4 = (type_2 *)0xffffffff;
                            }
                          }
                        }
                        goto LAB_0002e2e5;
                      }
                      local_e4 = (type_2 *)&bio_err;
                      pcVar35 = row[3];
                      ppcVar37 = extraout_ECX;
                      var_4((type_12 *)bio_err,"ERROR:Serial number %s has already been issued,\n",
                                 row[3],extraout_ECX);
                      var_20 = "      check the database/serial_file for corruption\n";
                    }
                    else {
                      var_20 = "ERROR:There is already a certificate for %s\n";
                      local_e4 = (type_2 *)&bio_err;
                      pcVar35 = row[5];
                      ppcVar37 = var_86;
                    }
                    var_7 = var_4(*(type_12 **)local_e4,var_20,pcVar35,ppcVar37);
                    var_4(*(type_12 **)local_e4,"The matching entry has the following details\n",
                               var_7,var_7);
                    var_101 = **var_86;
                    if (var_101 == 'E') {
                      var_20 = "Expired";
                    }
                    else if (var_101 == 'R') {
                      var_20 = "Revoked";
                    }
                    else if (var_101 == 'V') {
                      var_20 = "Valid";
                    }
                    else {
                      var_20 = "\ninvalid type, Data base error\n";
                    }
                    var_4(*(type_12 **)local_e4,"Type          :%s\n",var_20,extraout_EDX);
                    uVar12 = extraout_EDX_00;
                    if (**var_86 == 'R') {
                      var_20 = var_86[1];
                      if (var_20 == (char *)0x0) {
                        var_20 = "undef";
                      }
                      var_4(*(type_12 **)local_e4,"Was revoked on:%s\n",var_20,extraout_EDX_00);
                      uVar12 = extraout_EDX_03;
                    }
                    var_20 = var_86[1];
                    if (var_20 == (char *)0x0) {
                      var_20 = "undef";
                    }
                    var_4(*(type_12 **)local_e4,"Expires on    :%s\n",var_20,uVar12);
                    var_20 = var_86[3];
                    if (var_20 == (char *)0x0) {
                      var_20 = "undef";
                    }
                    var_4(*(type_12 **)local_e4,"Serial Number :%s\n",var_20,extraout_EDX_01);
                    var_20 = var_86[4];
                    if (var_20 == (char *)0x0) {
                      var_20 = "undef";
                    }
                    var_4(*(type_12 **)local_e4,"File name     :%s\n",var_20,extraout_EDX_02);
                    var_20 = var_86[5];
                    if (var_20 == (char *)0x0) {
                      var_20 = "undef";
                    }
                    var_57 = (type_23 *)0x0;
                    var_4(*(type_12 **)local_e4,"Subject Name  :%s\n",var_20,var_86);
                    local_e4 = (type_2 *)0xffffffff;
                    goto LAB_0002e2e5;
                  }
                }
                var_4((type_12 *)bio_err,"Memory allocation failure\n",ctx,ctx);
                local_e4 = (type_2 *)0xffffffff;
                goto LAB_0002e2e5;
              }
            }
          }
LAB_0002e84a:
          var_57 = (type_23 *)0x0;
        }
        local_e4 = (type_2 *)0xffffffff;
      }
    }
  }
  else {
    var_76 = (type_13 *)var_102((char *)var_2,multirdn,email_dn);
    if (var_76 != (type_13 *)0x0) {
      var_103((type_9 *)local_b4,var_76);
      var_51(var_76);
      goto LAB_0002dcb3;
    }
    var_72((type_12 *)bio_err);
    var_44 = (type_1 *)0x0;
    var_27 = (type_13 *)0x0;
    var_31 = (type_13 *)0x0;
    local_e4 = (type_2 *)0xffffffff;
    var_57 = (type_23 *)0x0;
  }
LAB_0002e2e5:
  var_104 = row;
  local_dc = (type_13 *)var_57;
  do {
    var_105 = var_104 + 1;
    var_84(*var_104);
    var_104 = var_105;
  } while ((type_19 *)local_3c != var_105);
  var_84(local_dc);
  var_51(var_31);
  var_51(var_27);
  var_106(var_44);
LAB_0002e343:
  if (var_107 == *(int *)(var_1 + 0x14)) {
    return (int)local_e4;
  }
                    /* WARNING: Subroutine does not return */
  var_108();
joined_r0x0002efd1:
  var_39 = var_49;
  if (var_42 != (type_14 *)0x0) {
LAB_0002e1ad:
    pbVar21 = (type_17 *)0xffffffff;
    var_7 = var_109(var_27,var_42,-1,0);
    var_39 = var_49;
    if (var_7 == 0) {
      var_20 = "Memory allocation failure\n";
      goto LAB_0002e2b5;
    }
  }
  goto LAB_0002e14e;
  while( true ) {
    var_7 = var_7 + -1;
    var_110 = *var_39 < *var_49;
    var_41 = *var_39 == *var_49;
    var_39 = var_39 + (type_21)bVar34 * -2 + 1;
    var_49 = var_49 + (type_21)bVar34 * -2 + 1;
    if (!var_41) break;
code_r0x0002e27e:
    if (var_7 == 0) break;
  }
  var_111 = false;
  var_41 = (!var_110 && !var_41) == var_110;
  if (var_41) {
LAB_0002e236:
    pbVar21 = *(type_17 **)(var_35 + 4);
    var_20 = "The %s field needed to be supplied and was missing\n";
  }
  else {
    var_7 = 6;
    var_39 = pbVar21;
    var_49 = (type_17 *)"match";
    do {
      if (var_7 == 0) break;
      var_7 = var_7 + -1;
      var_111 = *var_39 < *var_49;
      var_41 = *var_39 == *var_49;
      var_39 = var_39 + (type_21)bVar34 * -2 + 1;
      var_49 = var_49 + (type_21)bVar34 * -2 + 1;
    } while (var_41);
    if ((!var_111 && !var_41) == var_111) {
LAB_0002e2a5:
      pbVar21 = *(type_17 **)(var_35 + 4);
      var_20 = "The mandatory %s field was missing\n";
    }
    else {
LAB_0002e921:
      var_20 = "%s:invalid type in \'policy\' configuration\n";
    }
  }
LAB_0002e2b5:
  var_4((type_12 *)bio_err,var_20,pbVar21);
  goto LAB_0002e2c6;
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (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))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (field_expression argument: (identifier) field: (field_identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (number_literal) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))) right: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier)))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (escape_sequence) (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (field_expression argument: (identifier) field: (field_identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (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 (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (escape_sequence) (escape_sequence))))))))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (escape_sequence) (string_content) (escape_sequence)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (string_literal (escape_sequence) (string_content) (escape_sequence))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier)))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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 (identifier) (string_literal (string_content) (escape_sequence))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier))) consequence: (compound_statement (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: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (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 (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (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 (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (identifier) (identifier) (identifier) (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (string_literal (string_content))))) (goto_statement label: (statement_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: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) right: (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 (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (field_expression argument: (identifier) field: (field_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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 (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (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 (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (field_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) field: (field_identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (field_expression argument: (identifier) field: (field_identifier)))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (field_expression argument: (identifier) field: (field_identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (binary_expression left: (number_literal) right: (identifier)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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 (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (binary_expression left: (number_literal) right: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (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 (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (string_literal (string_content)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (number_literal) (pointer_expression argument: (identifier))))) right: (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (number_literal) (pointer_expression argument: (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 (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content)) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (escape_sequence)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content)) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (number_literal) (number_literal) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal)))) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (field_expression argument: (identifier) field: (field_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 (character)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (field_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) field: (field_identifier)))) right: (number_literal)))) (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier)))) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (identifier) (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (escape_sequence) (string_content) (escape_sequence))))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (identifier))) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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 (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier)))))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (string_literal (string_content))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence))))))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (goto_statement label: (statement_identifier)))))

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

undefined4 __regparm3
MASKED(undefined4 param_1,EVP_PKEY *param_2,X509 *param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,int *param_7,int *param_8,BIGNUM *param_9,
            int param_10,undefined4 param_11,undefined4 param_12,int param_13,undefined4 param_14,
            int param_15,X509 *param_16,int param_17,int param_18,X509V3_CTX *param_19,
            char *param_20,CONF *param_21,uint param_22,ulong param_23,int param_24,
            undefined4 param_25,X509 *param_26)

{
  uchar uVar1;
  char cVar2;
  BIO *pBVar3;
  CONF *conf;
  X509_NAME *pXVar4;
  int iVar5;
  X509_NAME_ENTRY *pXVar6;
  ASN1_STRING *pAVar7;
  ASN1_OBJECT *o;
  char *pcVar8;
  byte *pbVar10;
  X509 *pXVar11;
  undefined4 uVar12;
  EVP_PKEY *pEVar13;
  OPENSSL_STRING *ppcVar14;
  char *pcVar15;
  ASN1_TIME *a;
  char *pcVar16;
  uint uVar17;
  int iVar18;
  int loc;
  uchar *puVar19;
  X509 *pXVar20;
  OPENSSL_STRING *extraout_ECX;
  undefined4 extraout_EDX;
  undefined4 extraout_EDX_00;
  undefined4 extraout_EDX_01;
  undefined4 extraout_EDX_02;
  byte *pbVar21;
  undefined4 extraout_EDX_03;
  undefined4 extraout_EDX_04;
  uchar *puVar22;
  byte *pbVar23;
  byte *pbVar24;
  X509V3_CTX *ctx;
  ASN1_INTEGER *pAVar25;
  byte *pbVar26;
  int in_GS_OFFSET;
  undefined1 uVar27;
  bool bVar28;
  bool bVar29;
  undefined1 uVar30;
  bool bVar31;
  byte bVar32;
  undefined8 uVar33;
  undefined4 uVar34;
  OPENSSL_STRING *ppcVar35;
  X509 *x;
  undefined1 auStack_ec [8];
  EVP_PKEY *local_e4;
  X509 *local_e0;
  X509_NAME *local_dc;
  X509_NAME *local_d8;
  char *local_d4;
  char *local_d0;
  undefined4 local_cc;
  ASN1_STRING *local_c8;
  ASN1_STRING *local_c4;
  byte *local_c0;
  byte *local_bc;
  X509_NAME *local_b8;
  X509V3_CTX *local_b4;
  undefined4 *local_b0;
  X509 *local_ac;
  char *local_a8;
  int *local_a4;
  BIGNUM *local_a0;
  EVP_PKEY *local_9c;
  int local_98;
  undefined4 local_94;
  undefined4 local_90;
  int *local_8c;
  undefined4 local_88;
  CONF *local_84;
  byte *local_80;
  X509V3_CTX local_70;
  OPENSSL_STRING local_54;
  void *local_50;
  undefined4 local_4c;
  ASN1_INTEGER *local_48;
  char *local_44;
  ASN1_INTEGER *local_40;
  undefined4 local_3c;
  char acStack_23 [3];
  int local_20;
  undefined4 uStack_14;
  char *pcVar9;
  
  bVar32 = 0;
  uStack_14 = 0x2db89;
  local_94 = param_4;
  local_90 = param_5;
  local_88 = param_14;
  local_cc = param_6;
  local_98 = param_15;
  local_8c = param_7;
  local_b4 = param_19;
  local_a4 = param_8;
  local_a8 = param_20;
  local_a0 = param_9;
  local_84 = param_21;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_54 = (char *)0x0;
  local_50 = (void *)0x0;
  local_4c = 0;
  local_48 = (ASN1_INTEGER *)0x0;
  local_44 = (char *)0x0;
  local_40 = (ASN1_INTEGER *)0x0;
  local_ac = param_3;
  local_9c = param_2;
  if (param_10 == 0) {
LAB_0002dcb3:
    if (param_24 != 0) {
      BIO_printf(DAT_000c458c,"The Subject\'s Distinguished Name is as follows\n");
    }
    local_dc = (X509_NAME *)X509_REQ_get_subject_name(local_b4);
    local_d8 = (X509_NAME *)&DAT_000c458c;
    local_e4 = (EVP_PKEY *)0x0;
    while (iVar5 = X509_NAME_entry_count(local_dc), (int)local_e4 < iVar5) {
      pXVar6 = X509_NAME_get_entry(local_dc,(int)local_e4);
      pAVar7 = X509_NAME_ENTRY_get_data(pXVar6);
      o = X509_NAME_ENTRY_get_object(pXVar6);
      iVar5 = OBJ_obj2nid(o);
      if (DAT_000c44e8 != 0) {
        iVar18 = pAVar7->type;
        if (iVar18 == 0x1c) {
          ASN1_UNIVERSALSTRING_to_string(pAVar7);
          iVar18 = pAVar7->type;
        }
        if (iVar18 == 0x16) {
          if (iVar5 == 0x30) goto LAB_0002dfb4;
          pAVar7->type = 0x14;
        }
        else {
          if (iVar5 != 0x30) goto LAB_0002dd0e;
          if (iVar18 == 0x13) {
            pAVar7->type = 0x16;
          }
LAB_0002dfb4:
          if (param_13 == 0) goto LAB_0002dd2b;
          if (pAVar7->type != 0x16) goto LAB_0002dfcf;
        }
LAB_0002ddaf:
        iVar5 = ASN1_PRINTABLE_type(pAVar7->data,pAVar7->length);
        if (iVar5 == 0x14) {
          if (pAVar7->type == 0x14) goto LAB_0002dd1c;
        }
        else if ((iVar5 != 0x16) || (pAVar7->type != 0x13)) {
LAB_0002dd1c:
          if (param_24 != 0) {
            iVar5 = i2a_ASN1_OBJECT(*(BIO **)local_d8,o);
            pcVar15 = (char *)((int)&local_3c + 3);
            pcVar16 = pcVar15;
            if (0 < 0x16 - iVar5) {
              pcVar9 = pcVar15;
              do {
                pcVar8 = pcVar9 + 1;
                *pcVar9 = ' ';
                pcVar9 = pcVar8;
                pcVar16 = pcVar15 + (0x16 - iVar5);
              } while (pcVar15 + (0x16 - iVar5) != pcVar8);
            }
            pcVar16[0] = ':';
            pcVar16[1] = '\0';
            BIO_puts(*(BIO **)local_d8,pcVar15);
            iVar5 = pAVar7->type;
            if (iVar5 == 0x13) {
              BIO_printf(*(BIO **)local_d8,"PRINTABLE:\'");
            }
            else {
              pBVar3 = *(BIO **)local_d8;
              if (iVar5 == 0x14) {
                BIO_printf(pBVar3,"T61STRING:\'");
              }
              else if (iVar5 == 0x16) {
                BIO_printf(pBVar3,"IA5STRING:\'");
              }
              else if (iVar5 == 0x1c) {
                BIO_printf(pBVar3,"UNIVERSALSTRING:\'");
              }
              else {
                BIO_printf(pBVar3,"ASN.1 %2d:\'",iVar5);
              }
            }
            local_d4 = "^%c";
            puVar22 = pAVar7->data;
            local_d0 = "\\0x%02X";
            puVar19 = puVar22 + pAVar7->length;
            if (0 < pAVar7->length) {
              do {
                while( true ) {
                  uVar1 = *puVar22;
                  local_e0 = (X509 *)(int)(char)uVar1;
                  pBVar3 = *(BIO **)local_d8;
                  if (0x5e < (byte)(uVar1 - 0x20)) break;
                  puVar22 = puVar22 + 1;
                  BIO_printf(pBVar3,"%c",local_e0);
                  if (puVar22 == puVar19) goto LAB_0002df49;
                }
                if ((char)uVar1 < '\0') {
                  BIO_printf(pBVar3,local_d0,local_e0);
                }
                else {
                  BIO_printf(pBVar3,local_d4,(X509_NAME_ENTRY *)((int)local_e0 + 0x40));
                }
                puVar22 = puVar22 + 1;
              } while (puVar22 != puVar19);
            }
LAB_0002df49:
            BIO_printf(*(BIO **)local_d8,"\'\n");
          }
          goto LAB_0002dd2b;
        }
        pcVar15 = "\nThe string contains characters that are illegal for the ASN.1 type\n";
LAB_0002dde4:
        BIO_printf(DAT_000c458c,pcVar15);
        local_b8 = (X509_NAME *)0x0;
        goto LAB_0002de05;
      }
      if ((iVar5 != 0x30) || (param_13 != 0)) {
        iVar18 = pAVar7->type;
        if (iVar5 != 0x30) {
LAB_0002dd0e:
          if ((iVar18 != 0x1e) && (iVar18 != 0xc)) goto LAB_0002ddaf;
          goto LAB_0002dd1c;
        }
        if (iVar18 == 0x16) goto LAB_0002ddaf;
LAB_0002dfcf:
        pcVar15 = "\nemailAddress type needs to be of type IA5STRING\n";
        goto LAB_0002dde4;
      }
LAB_0002dd2b:
      local_e4 = (EVP_PKEY *)((int)&local_e4->type + 1);
    }
    local_b8 = X509_NAME_new();
    if (local_b8 == (X509_NAME *)0x0) {
      BIO_printf(DAT_000c458c,"Memory allocation failure\n");
LAB_0002de05:
      local_e0 = (X509 *)0x0;
      local_d8 = (X509_NAME *)0x0;
      pAVar25 = (ASN1_INTEGER *)0x0;
      local_e4 = (EVP_PKEY *)0xffffffff;
    }
    else {
      if (param_26 == (X509 *)0x0) {
        pXVar4 = X509_get_subject_name(local_ac);
        local_d8 = X509_NAME_dup(pXVar4);
      }
      else {
        local_d8 = X509_NAME_dup(local_dc);
      }
      if (local_d8 == (X509_NAME *)0x0) {
LAB_0002e2c6:
        local_e0 = (X509 *)0x0;
        pAVar25 = (ASN1_INTEGER *)0x0;
        local_e4 = (EVP_PKEY *)0xffffffff;
      }
      else {
        local_c0 = (byte *)0x7e599;
        local_d4 = (char *)0x0;
        local_c4 = (ASN1_STRING *)0x0;
        local_c8 = (ASN1_STRING *)0x0;
        while (iVar5 = OPENSSL_sk_num(local_cc), (int)local_d4 < iVar5) {
          local_d0 = (char *)OPENSSL_sk_value(local_cc,local_d4);
          iVar5 = OBJ_txt2nid(*(char **)(local_d0 + 4));
          if (iVar5 == 0) {
            pbVar21 = *(byte **)(local_d0 + 4);
            pcVar15 = "%s:unknown object type in \'policy\' configuration\n";
            goto LAB_0002e2b5;
          }
          local_e4 = (EVP_PKEY *)OBJ_nid2obj(iVar5);
          local_bc = (byte *)0x7e5a2;
          pbVar24 = (byte *)0xffffffff;
LAB_0002e14e:
          pbVar10 = (byte *)X509_NAME_get_index_by_OBJ
                                      (local_dc,(ASN1_OBJECT *)local_e4,(int)pbVar24);
          if (-1 < (int)pbVar10) {
            uVar27 = auStack_ec < (undefined1 *)0x8;
            uVar30 = &stack0x00000000 == (undefined1 *)0xf4;
            pXVar6 = X509_NAME_get_entry(local_dc,(int)pbVar10);
            iVar5 = 9;
            pbVar21 = *(byte **)(local_d0 + 8);
            pbVar24 = pbVar21;
            pbVar26 = local_c0;
            do {
              if (iVar5 == 0) break;
              iVar5 = iVar5 + -1;
              uVar27 = *pbVar24 < *pbVar26;
              uVar30 = *pbVar24 == *pbVar26;
              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;
            } while ((bool)uVar30);
            bVar28 = false;
            bVar31 = (!(bool)uVar27 && !(bool)uVar30) == (bool)uVar27;
            local_e0 = (X509 *)pXVar6;
            if (bVar31) goto joined_r0x0002efd1;
            iVar5 = 9;
            pbVar24 = pbVar21;
            pbVar26 = local_bc;
            do {
              pbVar23 = pbVar24;
              if (iVar5 == 0) break;
              iVar5 = iVar5 + -1;
              pbVar23 = pbVar24 + (uint)bVar32 * -2 + 1;
              bVar28 = *pbVar24 < *pbVar26;
              bVar31 = *pbVar24 == *pbVar26;
              pbVar24 = pbVar23;
              pbVar26 = pbVar26 + (uint)bVar32 * -2 + 1;
            } while (bVar31);
            if ((!bVar28 && !bVar31) == bVar28) {
              if (pXVar6 != (X509_NAME_ENTRY *)0x0) goto LAB_0002e1ad;
              goto LAB_0002e236;
            }
            local_80 = pbVar21;
            iVar5 = strcmp((char *)pbVar21,"match");
            pbVar21 = local_80;
            if (iVar5 == 0) {
              if (local_e0 != (X509 *)0x0) {
                iVar5 = -1;
                local_80 = pbVar10;
                do {
                  pEVar13 = local_e4;
                  iVar18 = iVar5;
                  loc = X509_NAME_get_index_by_OBJ(local_d8,(ASN1_OBJECT *)local_e4,iVar5);
                  if ((loc < 0) && (iVar5 == -1)) {
                    pbVar21 = *(byte **)(local_d0 + 4);
                    pcVar15 = 
                    "The %s field does not exist in the CA certificate,\nthe \'policy\' is misconfigured\n"
                    ;
                    goto LAB_0002e2b5;
                  }
                  if (loc < 0) {
                    puVar19 = "NULL";
                    if (local_c8 != (ASN1_STRING *)0x0) {
                      puVar19 = local_c8->data;
                    }
                    puVar22 = "NULL";
                    if (local_c4 != (ASN1_STRING *)0x0) {
                      puVar22 = local_c4->data;
                    }
                    BIO_printf(DAT_000c458c,
                               "The %s field is different between\nCA certificate (%s) and the request (%s)\n"
                               ,*(undefined4 *)(local_d0 + 4),puVar22,puVar19,pEVar13,iVar18,pbVar23
                              );
                    goto LAB_0002e2c6;
                  }
                  pXVar6 = X509_NAME_get_entry(local_d8,loc);
                  pAVar7 = X509_NAME_ENTRY_get_data((X509_NAME_ENTRY *)local_e0);
                  local_c8 = pAVar7;
                  local_c4 = X509_NAME_ENTRY_get_data(pXVar6);
                  iVar18 = ASN1_STRING_cmp(pAVar7,local_c4);
                  iVar5 = loc;
                  pbVar10 = local_80;
                } while (iVar18 != 0);
                goto joined_r0x0002efd1;
              }
              goto LAB_0002e2a5;
            }
            goto LAB_0002e921;
          }
          bVar28 = pbVar24 != (byte *)0xffffffff;
          bVar31 = pbVar24 == (byte *)0xffffffff;
          if (bVar31) {
            iVar5 = 9;
            pbVar21 = *(byte **)(local_d0 + 8);
            pbVar24 = pbVar21;
            pbVar10 = local_c0;
            do {
              if (iVar5 == 0) break;
              iVar5 = iVar5 + -1;
              bVar28 = *pbVar24 < *pbVar10;
              bVar31 = *pbVar24 == *pbVar10;
              pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
              pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;
            } while (bVar31);
            bVar29 = false;
            bVar28 = (!bVar28 && !bVar31) == bVar28;
            if (!bVar28) {
              iVar5 = 9;
              pbVar24 = pbVar21;
              pbVar10 = (byte *)"supplied";
              goto code_r0x0002e27e;
            }
          }
          local_d4 = local_d4 + 1;
        }
        if (DAT_000c44ec != 0) {
          X509_NAME_free(local_b8);
          local_b8 = X509_NAME_dup(local_dc);
          if (local_b8 == (X509_NAME *)0x0) goto LAB_0002e2c6;
        }
        if (param_18 != 0) {
          BIO_printf(DAT_000c458c,
                     "Everything appears to be ok, creating and signing the certificate\n");
        }
        pXVar11 = X509_new();
        local_e0 = pXVar11;
        if (pXVar11 == (X509 *)0x0) goto LAB_0002e84a;
        pAVar25 = X509_get_serialNumber(pXVar11);
        pAVar25 = BN_to_ASN1_INTEGER(local_a0,pAVar25);
        if (pAVar25 != (ASN1_INTEGER *)0x0) {
          if (param_26 == (X509 *)0x0) {
            pXVar4 = X509_get_subject_name(local_ac);
            iVar5 = X509_set_issuer_name(local_e0,pXVar4);
          }
          else {
            iVar5 = X509_set_issuer_name(pXVar11,local_b8);
          }
          if ((iVar5 != 0) &&
             (pXVar11 = param_16, iVar5 = FUN_00077500(local_e0,local_88,local_98,param_16),
             iVar5 != 0)) {
            if (local_98 != 0) {
              uVar12 = X509_get0_notAfter(local_e0);
              iVar5 = ASN1_TIME_diff(&local_70,0,0,uVar12);
              param_16 = (X509 *)local_70.flags;
              if (iVar5 == 0) goto LAB_0002e84a;
            }
            x = local_e0;
            iVar5 = X509_set_subject_name(local_e0,local_b8);
            ctx = local_b4;
            if (iVar5 != 0) {
              pEVar13 = (EVP_PKEY *)X509_REQ_get0_pubkey(local_b4);
              iVar5 = X509_set_pubkey(x,pEVar13);
              if (iVar5 != 0) {
                if (local_a8 != (char *)0x0) {
                  if (param_26 == (X509 *)0x0) {
                    X509V3_set_ctx(&local_70,local_ac,local_e0,(X509_REQ *)local_b4,(X509_CRL *)0x0,
                                   0);
                  }
                  else {
                    X509V3_set_ctx(&local_70,x,x,(X509_REQ *)ctx,(X509_CRL *)0x0,0);
                  }
                  conf = local_84;
                  ctx = &local_70;
                  if (DAT_000c44f0 == (CONF *)0x0) {
                    X509V3_set_nconf(ctx,local_84);
                    pXVar20 = (X509 *)X509V3_EXT_add_nconf(conf,ctx,local_a8,local_e0);
                    if (pXVar20 == (X509 *)0x0) {
                      BIO_printf(DAT_000c458c,"ERROR: adding extensions in section %s\n",local_a8,
                                 extraout_EDX_04);
                      ERR_print_errors(DAT_000c458c);
                      goto LAB_0002e84a;
                    }
                    pXVar11 = x;
                    if (param_18 != 0) {
                      BIO_printf(DAT_000c458c,"Successfully added extensions from config\n",pXVar20,
                                 pXVar20);
                      pXVar11 = pXVar20;
                    }
                  }
                  else if (param_18 == 0) {
                    X509V3_set_nconf(ctx,DAT_000c44f0);
                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);
                    if (iVar5 == 0) {
                      local_e4 = (EVP_PKEY *)&DAT_000c458c;
                      iVar5 = 0;
LAB_0002e824:
                      BIO_printf((BIO *)((ASN1_OBJECT *)local_e4)->sn,
                                 "ERROR: adding extensions in section %s\n",local_a8,iVar5);
                      ERR_print_errors((BIO *)local_e4->type);
                      goto LAB_0002e84a;
                    }
                  }
                  else {
                    local_e4 = (EVP_PKEY *)&DAT_000c458c;
                    BIO_printf(DAT_000c458c,"Extra configuration file found\n",DAT_000c44f0,
                               DAT_000c44f0);
                    X509V3_set_nconf(ctx,DAT_000c44f0);
                    iVar5 = X509V3_EXT_add_nconf(DAT_000c44f0,ctx,local_a8,local_e0);
                    if (iVar5 == 0) goto LAB_0002e824;
                    BIO_printf((BIO *)local_e4->type,"Successfully added extensions from file.\n",
                               param_26,param_26);
                    pXVar11 = param_26;
                  }
                }
                iVar5 = FUN_00073a40(local_e0,local_b4,param_25,pXVar11);
                if (iVar5 == 0) {
                  BIO_printf(DAT_000c458c,"ERROR: adding extensions from request\n");
                  ERR_print_errors(DAT_000c458c);
LAB_0002e94f:
                  pAVar25 = (ASN1_INTEGER *)0x0;
                  local_e4 = (EVP_PKEY *)0xffffffff;
                  goto LAB_0002e2e5;
                }
                iVar5 = X509_get0_extensions(local_e0);
                if (((iVar5 != 0) && (iVar5 = OPENSSL_sk_num(iVar5), 0 < iVar5)) &&
                   (iVar5 = X509_set_version(local_e0,2), iVar5 == 0)) goto LAB_0002e84a;
                if (param_18 != 0) {
                  BIO_printf(DAT_000c458c,
                             "The subject name appears to be ok, checking data base for clashes\n",
                             param_18,param_18);
                }
                if (param_13 == 0) {
                  ctx = (X509V3_CTX *)0xffffffff;
                  pXVar4 = X509_NAME_dup(local_b8);
                  if (pXVar4 != (X509_NAME *)0x0) {
                    while (iVar5 = X509_NAME_get_index_by_NID(pXVar4,0x30,(int)ctx), -1 < iVar5) {
                      ctx = (X509V3_CTX *)(iVar5 + -1);
                      pXVar6 = X509_NAME_delete_entry(pXVar4,iVar5);
                      X509_NAME_ENTRY_free(pXVar6);
                    }
                    iVar5 = X509_set_subject_name(local_e0,pXVar4);
                    if (iVar5 == 0) {
                      X509_NAME_free(pXVar4);
                      goto LAB_0002e94f;
                    }
                    X509_NAME_free(pXVar4);
                    goto LAB_0002e636;
                  }
                  pAVar25 = (ASN1_INTEGER *)0x0;
                }
                else {
LAB_0002e636:
                  pXVar4 = X509_get_subject_name(local_e0);
                  pAVar25 = (ASN1_INTEGER *)X509_NAME_oneline(pXVar4,(char *)0x0,0);
                  local_40 = pAVar25;
                  if (pAVar25 != (ASN1_INTEGER *)0x0) {
                    iVar5 = BN_is_zero(local_a0);
                    if (iVar5 == 0) {
                      pAVar25 = (ASN1_INTEGER *)BN_bn2hex(local_a0);
                    }
                    else {
                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup("00","../apps/ca.c",0x6c8);
                    }
                    pcVar15 = "../apps/ca.c";
                    local_48 = pAVar25;
                    if (pAVar25 == (ASN1_INTEGER *)0x0) {
LAB_0002eab4:
                      BIO_printf(DAT_000c458c,"Memory allocation failure\n",pAVar25,pAVar25);
                      local_e4 = (EVP_PKEY *)0xffffffff;
                      goto LAB_0002e2e5;
                    }
                    if ((char)local_40->length == '\0') {
                      CRYPTO_free(local_40);
                      pAVar25 = (ASN1_INTEGER *)CRYPTO_strdup((char *)local_48,"../apps/ca.c",0x6d7)
                      ;
                      local_40 = pAVar25;
                      if (pAVar25 == (ASN1_INTEGER *)0x0) goto LAB_0002eab4;
                    }
                    if ((*local_8c == 0) ||
                       (ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,5,&local_54),
                       ppcVar14 == (OPENSSL_STRING *)0x0)) {
                      ppcVar14 = TXT_DB_get_by_index((TXT_DB *)*local_a4,3,&local_54);
                      if (ppcVar14 == (OPENSSL_STRING *)0x0) {
                        if (param_24 == 0) {
                          local_e4 = (EVP_PKEY *)&DAT_000c458c;
                          BIO_printf(DAT_000c458c,"Certificate Details:\n",extraout_ECX,extraout_ECX
                                    );
                          iVar5 = X509_print_ex(*(BIO **)local_e4,local_e0,param_23,param_22 | 0x208
                                               );
                        }
                        else {
                          local_e4 = (EVP_PKEY *)&DAT_000c458c;
                          iVar5 = 0;
                        }
                        BIO_printf(*(BIO **)local_e4,"Certificate is to be certified until ",iVar5,
                                   iVar5);
                        a = (ASN1_TIME *)X509_get0_notAfter(local_e0);
                        iVar5 = ASN1_TIME_print(*(BIO **)local_e4,a);
                        if (param_16 != (X509 *)0x0) {
                          iVar5 = BIO_printf(*(BIO **)local_e4," (%ld days)",param_16,iVar5);
                        }
                        iVar5 = BIO_printf(*(BIO **)local_e4,"\n",iVar5,iVar5);
                        pAVar25 = (ASN1_INTEGER *)0x0;
                        if (param_17 == 0) {
                          BIO_printf(*(BIO **)local_e4,"Sign the certificate? [y/n]:",iVar5,iVar5);
                          BIO_ctrl(*(BIO **)local_e4,0xb,0,(void *)0x0);
                          local_3c._3_1_ = 0;
                          pcVar16 = fgets((char *)((int)&local_3c + 3),0x19,
                                          *(FILE **)PTR_stdin_000bdf94);
                          if (pcVar16 == (char *)0x0) {
                            pAVar25 = (ASN1_INTEGER *)0x0;
                            BIO_printf(*(BIO **)local_e4,
                                       "CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n",0,0);
                            local_e4 = (EVP_PKEY *)0x0;
                          }
                          else {
                            uVar17 = local_3c._3_1_ & 0xffffffdf;
                            if ((char)uVar17 == 'Y') goto LAB_0002ebcc;
                            BIO_printf(*(BIO **)local_e4,"CERTIFICATE WILL NOT BE CERTIFIED\n",
                                       uVar17,uVar17);
                            local_e4 = (EVP_PKEY *)0x0;
                          }
                        }
                        else {
LAB_0002ebcc:
                          local_dc = (X509_NAME *)local_e4;
                          local_e4 = (EVP_PKEY *)X509_get0_pubkey(local_e0);
                          iVar5 = EVP_PKEY_missing_parameters(local_e4);
                          if ((iVar5 != 0) &&
                             (iVar5 = EVP_PKEY_missing_parameters(local_9c), iVar5 == 0)) {
                            EVP_PKEY_copy_parameters(local_e4,local_9c);
                          }
                          local_d4 = (char *)local_dc;
                          uVar33 = FUN_0004e150(local_e0,local_9c,local_94,local_90);
                          uVar12 = (undefined4)((ulonglong)uVar33 >> 0x20);
                          local_e4 = (EVP_PKEY *)0xffffffff;
                          if ((int)uVar33 != 0) {
                            uVar34 = 0x742;
                            local_54 = CRYPTO_strdup("V","../apps/ca.c",0x742);
                            local_e4 = (EVP_PKEY *)
                                       X509_get0_notAfter(local_e0,pcVar15,uVar34,uVar12);
                            local_dc = *(X509_NAME **)local_e4;
                            local_50 = (void *)FUN_00073440((undefined1 *)
                                                            ((int)&((ASN1_INTEGER *)local_dc)->
                                                                   length + 1),"row expdate");
                            memcpy(local_50,*(void **)((int)local_e4 + 8),*(size_t *)local_e4);
                            *(undefined1 *)((int)local_50 + *(size_t *)local_e4) = 0;
                            local_4c = 0;
                            local_44 = CRYPTO_strdup("unknown","../apps/ca.c",0x748);
                            if ((((local_54 == (char *)0x0) || (local_50 == (void *)0x0)) ||
                                (local_44 == (char *)0x0)) || (local_40 == (ASN1_INTEGER *)0x0)) {
                              BIO_printf(*(BIO **)local_d4,"Memory allocation failure\n",local_44,
                                         local_44);
                              local_e4 = (EVP_PKEY *)0xffffffff;
                            }
                            else {
                              local_e4 = (EVP_PKEY *)local_d4;
                              pAVar25 = (ASN1_INTEGER *)
                                        FUN_00073440(0x1c,"row space",local_44,local_44);
                              iVar5 = 0;
                              do {
                                (&pAVar25->length)[iVar5] = (int)(&local_54)[iVar5];
                                iVar5 = iVar5 + 1;
                              } while (iVar5 != 6);
                              pAVar25[1].data = (uchar *)0x0;
                              iVar5 = TXT_DB_insert((TXT_DB *)*local_a4,(OPENSSL_STRING *)pAVar25);
                              if (iVar5 != 0) {
                                CRYPTO_free((void *)0x0);
                                X509_NAME_free(local_d8);
                                X509_NAME_free(local_b8);
                                *local_b0 = local_e0;
                                local_e4 = (EVP_PKEY *)0x1;
                                goto LAB_0002e343;
                              }
                              BIO_printf(*(BIO **)local_e4,"failed to update database\n",0,0);
                              BIO_printf(*(BIO **)local_e4,"TXT_DB error number %ld\n",
                                         *(undefined4 *)(*local_a4 + 0x10));
                              local_e4 = (EVP_PKEY *)0xffffffff;
                            }
                          }
                        }
                        goto LAB_0002e2e5;
                      }
                      local_e4 = (EVP_PKEY *)&DAT_000c458c;
                      pAVar25 = local_48;
                      ppcVar35 = extraout_ECX;
                      BIO_printf(DAT_000c458c,"ERROR:Serial number %s has already been issued,\n",
                                 local_48,extraout_ECX);
                      pcVar15 = "      check the database/serial_file for corruption\n";
                    }
                    else {
                      pcVar15 = "ERROR:There is already a certificate for %s\n";
                      local_e4 = (EVP_PKEY *)&DAT_000c458c;
                      pAVar25 = local_40;
                      ppcVar35 = ppcVar14;
                    }
                    iVar5 = BIO_printf(*(BIO **)local_e4,pcVar15,pAVar25,ppcVar35);
                    BIO_printf(*(BIO **)local_e4,"The matching entry has the following details\n",
                               iVar5,iVar5);
                    cVar2 = **ppcVar14;
                    if (cVar2 == 'E') {
                      pcVar15 = "Expired";
                    }
                    else if (cVar2 == 'R') {
                      pcVar15 = "Revoked";
                    }
                    else if (cVar2 == 'V') {
                      pcVar15 = "Valid";
                    }
                    else {
                      pcVar15 = "\ninvalid type, Data base error\n";
                    }
                    BIO_printf(*(BIO **)local_e4,"Type          :%s\n",pcVar15,extraout_EDX);
                    uVar12 = extraout_EDX_00;
                    if (**ppcVar14 == 'R') {
                      pcVar15 = ppcVar14[1];
                      if (pcVar15 == (char *)0x0) {
                        pcVar15 = "undef";
                      }
                      BIO_printf(*(BIO **)local_e4,"Was revoked on:%s\n",pcVar15,extraout_EDX_00);
                      uVar12 = extraout_EDX_03;
                    }
                    pcVar15 = ppcVar14[1];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"Expires on    :%s\n",pcVar15,uVar12);
                    pcVar15 = ppcVar14[3];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"Serial Number :%s\n",pcVar15,extraout_EDX_01);
                    pcVar15 = ppcVar14[4];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    BIO_printf(*(BIO **)local_e4,"File name     :%s\n",pcVar15,extraout_EDX_02);
                    pcVar15 = ppcVar14[5];
                    if (pcVar15 == (char *)0x0) {
                      pcVar15 = "undef";
                    }
                    pAVar25 = (ASN1_INTEGER *)0x0;
                    BIO_printf(*(BIO **)local_e4,"Subject Name  :%s\n",pcVar15,ppcVar14);
                    local_e4 = (EVP_PKEY *)0xffffffff;
                    goto LAB_0002e2e5;
                  }
                }
                BIO_printf(DAT_000c458c,"Memory allocation failure\n",ctx,ctx);
                local_e4 = (EVP_PKEY *)0xffffffff;
                goto LAB_0002e2e5;
              }
            }
          }
LAB_0002e84a:
          pAVar25 = (ASN1_INTEGER *)0x0;
        }
        local_e4 = (EVP_PKEY *)0xffffffff;
      }
    }
  }
  else {
    pXVar4 = (X509_NAME *)FUN_00074ec0(param_10,param_11,param_12);
    if (pXVar4 != (X509_NAME *)0x0) {
      X509_REQ_set_subject_name((X509_REQ *)local_b4,pXVar4);
      X509_NAME_free(pXVar4);
      goto LAB_0002dcb3;
    }
    ERR_print_errors(DAT_000c458c);
    local_e0 = (X509 *)0x0;
    local_b8 = (X509_NAME *)0x0;
    local_d8 = (X509_NAME *)0x0;
    local_e4 = (EVP_PKEY *)0xffffffff;
    pAVar25 = (ASN1_INTEGER *)0x0;
  }
LAB_0002e2e5:
  ppcVar14 = &local_54;
  local_dc = (X509_NAME *)pAVar25;
  do {
    ppcVar35 = ppcVar14 + 1;
    CRYPTO_free(*ppcVar14);
    ppcVar14 = ppcVar35;
  } while ((OPENSSL_STRING *)&local_3c != ppcVar35);
  CRYPTO_free(local_dc);
  X509_NAME_free(local_d8);
  X509_NAME_free(local_b8);
  X509_free(local_e0);
LAB_0002e343:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_e4;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0007d010();
joined_r0x0002efd1:
  pbVar24 = pbVar10;
  if (pXVar6 != (X509_NAME_ENTRY *)0x0) {
LAB_0002e1ad:
    pbVar21 = (byte *)0xffffffff;
    iVar5 = X509_NAME_add_entry(local_b8,pXVar6,-1,0);
    pbVar24 = pbVar10;
    if (iVar5 == 0) {
      pcVar15 = "Memory allocation failure\n";
      goto LAB_0002e2b5;
    }
  }
  goto LAB_0002e14e;
  while( true ) {
    iVar5 = iVar5 + -1;
    bVar29 = *pbVar24 < *pbVar10;
    bVar28 = *pbVar24 == *pbVar10;
    pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
    pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;
    if (!bVar28) break;
code_r0x0002e27e:
    if (iVar5 == 0) break;
  }
  bVar31 = false;
  bVar28 = (!bVar29 && !bVar28) == bVar29;
  if (bVar28) {
LAB_0002e236:
    pbVar21 = *(byte **)(local_d0 + 4);
    pcVar15 = "The %s field needed to be supplied and was missing\n";
  }
  else {
    iVar5 = 6;
    pbVar24 = pbVar21;
    pbVar10 = (byte *)"match";
    do {
      if (iVar5 == 0) break;
      iVar5 = iVar5 + -1;
      bVar31 = *pbVar24 < *pbVar10;
      bVar28 = *pbVar24 == *pbVar10;
      pbVar24 = pbVar24 + (uint)bVar32 * -2 + 1;
      pbVar10 = pbVar10 + (uint)bVar32 * -2 + 1;
    } while (bVar28);
    if ((!bVar31 && !bVar28) == bVar31) {
LAB_0002e2a5:
      pbVar21 = *(byte **)(local_d0 + 4);
      pcVar15 = "The mandatory %s field was missing\n";
    }
    else {
LAB_0002e921:
      pcVar15 = "%s:invalid type in \'policy\' configuration\n";
    }
  }
LAB_0002e2b5:
  BIO_printf(DAT_000c458c,pcVar15,pbVar21);
  goto LAB_0002e2c6;
}

