/*
 * WARNING: do not edit!
 * Generated by Makefile from crypto/params_idx.c.in
 *
 * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */


#include "internal/e_os.h"
#include "internal/param_names.h"
#include <string.h>

/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */
int ossl_param_find_pidx(const char *s)
{
    switch(s[0]) {
    default:
        break;
    case 'a':
        switch(s[1]) {
        default:
            break;
        case 'c':
            if (strcmp("vp-info", s + 2) == 0)
                return PIDX_KDF_PARAM_X942_ACVPINFO;
            break;
        case 'd':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_KDF_PARAM_ARGON2_AD;
            }
            break;
        case 'e':
            if (strcmp("ad", s + 2) == 0)
                return PIDX_CIPHER_PARAM_AEAD;
            break;
        case 'l':
            switch(s[2]) {
            default:
                break;
            case 'g':
                switch(s[3]) {
                default:
                    break;
                case '_':
                    if (strcmp("id_param", s + 4) == 0)
                        return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS;
                    break;
                case 'i':
                    if (strcmp("d-absent", s + 4) == 0)
                        return PIDX_DIGEST_PARAM_ALGID_ABSENT;
                    break;
                case 'o':
                    if (strcmp("rithm-id", s + 4) == 0)
                        return PIDX_SIGNATURE_PARAM_ALGORITHM_ID;
                }
                break;
            case 'i':
                if (strcmp("as", s + 3) == 0)
                    return PIDX_STORE_PARAM_ALIAS;
            }
            break;
        case '\0':
            return PIDX_PKEY_PARAM_EC_A;
        }
        break;
    case 'b':
        switch(s[1]) {
        default:
            break;
        case 'a':
            if (strcmp("sis-type", s + 2) == 0)
                return PIDX_PKEY_PARAM_EC_CHAR2_TYPE;
            break;
        case 'i':
            if (strcmp("ts", s + 2) == 0)
                return PIDX_PKEY_PARAM_BITS;
            break;
        case 'l':
            switch(s[2]) {
            default:
                break;
            case 'o':
                switch(s[3]) {
                default:
                    break;
                case 'c':
                    switch(s[4]) {
                    default:
                        break;
                    case 'k':
                        switch(s[5]) {
                        default:
                            break;
                        case '-':
                            if (strcmp("size", s + 6) == 0)
                                return PIDX_MAC_PARAM_BLOCK_SIZE;
                            break;
                        case '_':
                            if (strcmp("padding", s + 6) == 0)
                                return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING;
                            break;
                        case 's':
                            if (strcmp("ize", s + 6) == 0)
                                return PIDX_CIPHER_PARAM_BLOCK_SIZE;
                        }
                    }
                }
            }
            break;
        case 'u':
            if (strcmp("ildinfo", s + 2) == 0)
                return PIDX_PROV_PARAM_BUILDINFO;
            break;
        case '\0':
            return PIDX_PKEY_PARAM_EC_B;
        }
        break;
    case 'c':
        switch(s[1]) {
        default:
            break;
        case '-':
            if (strcmp("rounds", s + 2) == 0)
                return PIDX_MAC_PARAM_C_ROUNDS;
            break;
        case 'e':
            if (strcmp("kalg", s + 2) == 0)
                return PIDX_KDF_PARAM_CEK_ALG;
            break;
        case 'i':
            if (strcmp("pher", s + 2) == 0)
                return PIDX_ALG_PARAM_CIPHER;
            break;
        case 'o':
            switch(s[2]) {
            default:
                break;
            case 'f':
                if (strcmp("actor", s + 3) == 0)
                    return PIDX_PKEY_PARAM_EC_COFACTOR;
                break;
            case 'n':
                switch(s[3]) {
                default:
                    break;
                case 's':
                    if (strcmp("tant", s + 4) == 0)
                        return PIDX_KDF_PARAM_CONSTANT;
                    break;
                case 't':
                    if (strcmp("ext-string", s + 4) == 0)
                        return PIDX_SIGNATURE_PARAM_CONTEXT_STRING;
                }
            }
            break;
        case 't':
            switch(s[2]) {
            default:
                break;
            case 's':
                switch(s[3]) {
                default:
                    break;
                case '_':
                    if (strcmp("mode", s + 4) == 0)
                        return PIDX_CIPHER_PARAM_CTS_MODE;
                    break;
                case '\0':
                    return PIDX_CIPHER_PARAM_CTS;
                }
            }
            break;
        case 'u':
            switch(s[2]) {
            default:
                break;
            case 's':
                switch(s[3]) {
                default:
                    break;
                case 't':
                    switch(s[4]) {
                    default:
                        break;
                    case 'o':
                        switch(s[5]) {
                        default:
                            break;
                        case 'm':
                            switch(s[6]) {
                            default:
                                break;
                            case '-':
                                if (strcmp("iv", s + 7) == 0)
                                    return PIDX_CIPHER_PARAM_CUSTOM_IV;
                                break;
                            case '\0':
                                return PIDX_MAC_PARAM_CUSTOM;
                            }
                        }
                    }
                }
            }
        }
        break;
    case 'd':
        switch(s[1]) {
        default:
            break;
        case '-':
            if (strcmp("rounds", s + 2) == 0)
                return PIDX_MAC_PARAM_D_ROUNDS;
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 't':
                switch(s[3]) {
                default:
                    break;
                case 'a':
                    switch(s[4]) {
                    default:
                        break;
                    case '-':
                        switch(s[5]) {
                        default:
                            break;
                        case 's':
                            if (strcmp("tructure", s + 6) == 0)
                                return PIDX_OBJECT_PARAM_DATA_STRUCTURE;
                            break;
                        case 't':
                            if (strcmp("ype", s + 6) == 0)
                                return PIDX_OBJECT_PARAM_DATA_TYPE;
                        }
                        break;
                    case '\0':
                        return PIDX_OBJECT_PARAM_DATA;
                    }
                }
            }
            break;
        case 'e':
            switch(s[2]) {
            default:
                break;
            case 'c':
                if (strcmp("oded-from-explicit", s + 3) == 0)
                    return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS;
                break;
            case 'f':
                if (strcmp("ault-digest", s + 3) == 0)
                    return PIDX_PKEY_PARAM_DEFAULT_DIGEST;
                break;
            case 's':
                if (strcmp("c", s + 3) == 0)
                    return PIDX_OBJECT_PARAM_DESC;
            }
            break;
        case 'h':
            if (strcmp("kem-ikm", s + 2) == 0)
                return PIDX_PKEY_PARAM_DHKEM_IKM;
            break;
        case 'i':
            switch(s[2]) {
            default:
                break;
            case 'g':
                switch(s[3]) {
                default:
                    break;
                case 'e':
                    switch(s[4]) {
                    default:
                        break;
                    case 's':
                        switch(s[5]) {
                        default:
                            break;
                        case 't':
                            switch(s[6]) {
                            default:
                                break;
                            case '-':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'n':
                                    if (strcmp("oinit", s + 8) == 0)
                                        return PIDX_MAC_PARAM_DIGEST_NOINIT;
                                    break;
                                case 'o':
                                    if (strcmp("neshot", s + 8) == 0)
                                        return PIDX_MAC_PARAM_DIGEST_ONESHOT;
                                    break;
                                case 'p':
                                    if (strcmp("rops", s + 8) == 0)
                                        return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS;
                                    break;
                                case 's':
                                    if (strcmp("ize", s + 8) == 0)
                                        return PIDX_PKEY_PARAM_DIGEST_SIZE;
                                }
                                break;
                            case '\0':
                                return PIDX_ALG_PARAM_DIGEST;
                            }
                        }
                    }
                }
                break;
            case 's':
                if (strcmp("tid", s + 3) == 0)
                    return PIDX_PKEY_PARAM_DIST_ID;
            }
            break;
        case 'r':
            if (strcmp("bg-no-trunc-md", s + 2) == 0)
                return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST;
            break;
        case '\0':
            return PIDX_PKEY_PARAM_RSA_D;
        }
        break;
    case 'e':
        switch(s[1]) {
        default:
            break;
        case 'a':
            if (strcmp("rly_clean", s + 2) == 0)
                return PIDX_KDF_PARAM_EARLY_CLEAN;
            break;
        case 'c':
            if (strcmp("dh-cofactor-mode", s + 2) == 0)
                return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE;
            break;
        case 'n':
            switch(s[2]) {
            default:
                break;
            case 'c':
                switch(s[3]) {
                default:
                    break;
                case 'o':
                    switch(s[4]) {
                    default:
                        break;
                    case 'd':
                        switch(s[5]) {
                        default:
                            break;
                        case 'e':
                            if (strcmp("d-pub-key", s + 6) == 0)
                                return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY;
                            break;
                        case 'i':
                            if (strcmp("ng", s + 6) == 0)
                                return PIDX_PKEY_PARAM_EC_ENCODING;
                        }
                    }
                    break;
                case 'r':
                    if (strcmp("ypt-level", s + 4) == 0)
                        return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL;
                }
                break;
            case 'g':
                if (strcmp("ine", s + 3) == 0)
                    return PIDX_ALG_PARAM_ENGINE;
                break;
            case 't':
                switch(s[3]) {
                default:
                    break;
                case 'r':
                    switch(s[4]) {
                    default:
                        break;
                    case 'o':
                        switch(s[5]) {
                        default:
                            break;
                        case 'p':
                            switch(s[6]) {
                            default:
                                break;
                            case 'y':
                                switch(s[7]) {
                                default:
                                    break;
                                case '_':
                                    if (strcmp("required", s + 8) == 0)
                                        return PIDX_DRBG_PARAM_ENTROPY_REQUIRED;
                                    break;
                                case '\0':
                                    return PIDX_KDF_PARAM_HMACDRBG_ENTROPY;
                                }
                            }
                        }
                    }
                }
            }
            break;
        case '\0':
            return PIDX_PKEY_PARAM_RSA_E;
            break;
        case 'x':
            if (strcmp("pect", s + 2) == 0)
                return PIDX_STORE_PARAM_EXPECT;
        }
        break;
    case 'f':
        switch(s[1]) {
        default:
            break;
        case 'i':
            switch(s[2]) {
            default:
                break;
            case 'e':
                if (strcmp("ld-type", s + 3) == 0)
                    return PIDX_PKEY_PARAM_EC_FIELD_TYPE;
                break;
            case 'n':
                if (strcmp("gerprint", s + 3) == 0)
                    return PIDX_STORE_PARAM_FINGERPRINT;
            }
        }
        break;
    case 'g':
        switch(s[1]) {
        default:
            break;
        case 'e':
            switch(s[2]) {
            default:
                break;
            case 'n':
                switch(s[3]) {
                default:
                    break;
                case 'e':
                    switch(s[4]) {
                    default:
                        break;
                    case 'r':
                        switch(s[5]) {
                        default:
                            break;
                        case 'a':
                            switch(s[6]) {
                            default:
                                break;
                            case 't':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'e':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case '\0':
                                        return PIDX_RAND_PARAM_GENERATE;
                                    }
                                    break;
                                case 'o':
                                    if (strcmp("r", s + 8) == 0)
                                        return PIDX_PKEY_PARAM_EC_GENERATOR;
                                }
                            }
                        }
                    }
                }
            }
            break;
        case 'i':
            if (strcmp("ndex", s + 2) == 0)
                return PIDX_PKEY_PARAM_FFC_GINDEX;
            break;
        case 'r':
            switch(s[2]) {
            default:
                break;
            case 'o':
                switch(s[3]) {
                default:
                    break;
                case 'u':
                    switch(s[4]) {
                    default:
                        break;
                    case 'p':
                        switch(s[5]) {
                        default:
                            break;
                        case '-':
                            if (strcmp("check", s + 6) == 0)
                                return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE;
                            break;
                        case '\0':
                            return PIDX_PKEY_PARAM_GROUP_NAME;
                        }
                    }
                }
            }
            break;
        case '\0':
            return PIDX_PKEY_PARAM_FFC_G;
        }
        break;
    case 'h':
        switch(s[1]) {
        default:
            break;
        case 'a':
            if (strcmp("s-randkey", s + 2) == 0)
                return PIDX_CIPHER_PARAM_HAS_RAND_KEY;
            break;
        case 'i':
            if (strcmp("ndex", s + 2) == 0)
                return PIDX_PKEY_PARAM_FFC_H;
        }
        break;
    case 'i':
        switch(s[1]) {
        default:
            break;
        case 'd':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_KDF_PARAM_PKCS12_ID;
            }
            break;
        case 'k':
            if (strcmp("me", s + 2) == 0)
                return PIDX_KEM_PARAM_IKME;
            break;
        case 'm':
            if (strcmp("plicit-rejection", s + 2) == 0)
                return PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION;
            break;
        case 'n':
            switch(s[2]) {
            default:
                break;
            case 'c':
                if (strcmp("lude-public", s + 3) == 0)
                    return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC;
                break;
            case 'f':
                if (strcmp("o", s + 3) == 0)
                    return PIDX_KDF_PARAM_INFO;
                break;
            case 'p':
                if (strcmp("ut-type", s + 3) == 0)
                    return PIDX_STORE_PARAM_INPUT_TYPE;
                break;
            case 's':
                if (strcmp("tance", s + 3) == 0)
                    return PIDX_SIGNATURE_PARAM_INSTANCE;
            }
            break;
        case 't':
            switch(s[2]) {
            default:
                break;
            case 'e':
                switch(s[3]) {
                default:
                    break;
                case 'r':
                    switch(s[4]) {
                    default:
                        break;
                    case 'a':
                        if (strcmp("tion", s + 5) == 0)
                            return PIDX_GEN_PARAM_ITERATION;
                        break;
                    case '\0':
                        return PIDX_KDF_PARAM_ITER;
                    }
                }
            }
            break;
        case 'v':
            switch(s[2]) {
            default:
                break;
            case 'l':
                if (strcmp("en", s + 3) == 0)
                    return PIDX_CIPHER_PARAM_IVLEN;
                break;
            case '\0':
                return PIDX_CIPHER_PARAM_IV;
            }
        }
        break;
    case 'j':
        switch(s[1]) {
        default:
            break;
        case '\0':
            return PIDX_PKEY_PARAM_FFC_COFACTOR;
        }
        break;
    case 'k':
        switch(s[1]) {
        default:
            break;
        case '1':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1;
            }
            break;
        case '2':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2;
            }
            break;
        case '3':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3;
            }
            break;
        case 'a':
            if (strcmp("t", s + 2) == 0)
                return PIDX_SIGNATURE_PARAM_KAT;
            break;
        case 'd':
            switch(s[2]) {
            default:
                break;
            case 'f':
                switch(s[3]) {
                default:
                    break;
                case '-':
                    switch(s[4]) {
                    default:
                        break;
                    case 'd':
                        switch(s[5]) {
                        default:
                            break;
                        case 'i':
                            switch(s[6]) {
                            default:
                                break;
                            case 'g':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'e':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 's':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 't':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case '-':
                                                if (strcmp("props", s + 11) == 0)
                                                    return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS;
                                                break;
                                            case '\0':
                                                return PIDX_EXCHANGE_PARAM_KDF_DIGEST;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    case 'o':
                        if (strcmp("utlen", s + 5) == 0)
                            return PIDX_EXCHANGE_PARAM_KDF_OUTLEN;
                        break;
                    case 't':
                        if (strcmp("ype", s + 5) == 0)
                            return PIDX_EXCHANGE_PARAM_KDF_TYPE;
                        break;
                    case 'u':
                        if (strcmp("km", s + 5) == 0)
                            return PIDX_EXCHANGE_PARAM_KDF_UKM;
                    }
                }
            }
            break;
        case 'e':
            switch(s[2]) {
            default:
                break;
            case 'y':
                switch(s[3]) {
                default:
                    break;
                case 'b':
                    if (strcmp("its", s + 4) == 0)
                        return PIDX_CIPHER_PARAM_RC2_KEYBITS;
                    break;
                case 'l':
                    if (strcmp("en", s + 4) == 0)
                        return PIDX_CIPHER_PARAM_KEYLEN;
                    break;
                case '\0':
                    return PIDX_KDF_PARAM_KEY;
                }
            }
        }
        break;
    case 'l':
        switch(s[1]) {
        default:
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 'b':
                if (strcmp("el", s + 3) == 0)
                    return PIDX_KDF_PARAM_LABEL;
                break;
            case 'n':
                if (strcmp("es", s + 3) == 0)
                    return PIDX_KDF_PARAM_ARGON2_LANES;
            }
        }
        break;
    case 'm':
        switch(s[1]) {
        default:
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 'c':
                switch(s[3]) {
                default:
                    break;
                case 'k':
                    if (strcmp("ey", s + 4) == 0)
                        return PIDX_CIPHER_PARAM_AEAD_MAC_KEY;
                    break;
                case 'l':
                    if (strcmp("en", s + 4) == 0)
                        return PIDX_KDF_PARAM_MAC_SIZE;
                    break;
                case '\0':
                    return PIDX_ALG_PARAM_MAC;
                }
                break;
            case 'n':
                if (strcmp("datory-digest", s + 3) == 0)
                    return PIDX_PKEY_PARAM_MANDATORY_DIGEST;
                break;
            case 'x':
                switch(s[3]) {
                default:
                    break;
                case '-':
                    if (strcmp("size", s + 4) == 0)
                        return PIDX_PKEY_PARAM_MAX_SIZE;
                    break;
                case '_':
                    switch(s[4]) {
                    default:
                        break;
                    case 'a':
                        if (strcmp("dinlen", s + 5) == 0)
                            return PIDX_DRBG_PARAM_MAX_ADINLEN;
                        break;
                    case 'e':
                        switch(s[5]) {
                        default:
                            break;
                        case 'a':
                            if (strcmp("rly_data", s + 6) == 0)
                                return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA;
                            break;
                        case 'n':
                            if (strcmp("tropylen", s + 6) == 0)
                                return PIDX_DRBG_PARAM_MAX_ENTROPYLEN;
                        }
                        break;
                    case 'f':
                        if (strcmp("rag_len", s + 5) == 0)
                            return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN;
                        break;
                    case 'n':
                        if (strcmp("oncelen", s + 5) == 0)
                            return PIDX_DRBG_PARAM_MAX_NONCELEN;
                        break;
                    case 'p':
                        if (strcmp("erslen", s + 5) == 0)
                            return PIDX_DRBG_PARAM_MAX_PERSLEN;
                        break;
                    case 'r':
                        if (strcmp("equest", s + 5) == 0)
                            return PIDX_RAND_PARAM_MAX_REQUEST;
                    }
                    break;
                case 'i':
                    if (strcmp("um_length", s + 4) == 0)
                        return PIDX_DRBG_PARAM_MAX_LENGTH;
                    break;
                case 'm':
                    if (strcmp("em_bytes", s + 4) == 0)
                        return PIDX_KDF_PARAM_SCRYPT_MAXMEM;
                }
            }
            break;
        case 'e':
            if (strcmp("mcost", s + 2) == 0)
                return PIDX_KDF_PARAM_ARGON2_MEMCOST;
            break;
        case 'g':
            switch(s[2]) {
            default:
                break;
            case 'f':
                switch(s[3]) {
                default:
                    break;
                case '1':
                    switch(s[4]) {
                    default:
                        break;
                    case '-':
                        switch(s[5]) {
                        default:
                            break;
                        case 'd':
                            if (strcmp("igest", s + 6) == 0)
                                return PIDX_PKEY_PARAM_MGF1_DIGEST;
                            break;
                        case 'p':
                            if (strcmp("roperties", s + 6) == 0)
                                return PIDX_PKEY_PARAM_MGF1_PROPERTIES;
                        }
                    }
                    break;
                case '\0':
                    return PIDX_PKEY_PARAM_MASKGENFUNC;
                }
            }
            break;
        case 'i':
            switch(s[2]) {
            default:
                break;
            case 'c':
                if (strcmp("alg", s + 3) == 0)
                    return PIDX_DIGEST_PARAM_MICALG;
                break;
            case 'n':
                switch(s[3]) {
                default:
                    break;
                case '_':
                    switch(s[4]) {
                    default:
                        break;
                    case 'e':
                        if (strcmp("ntropylen", s + 5) == 0)
                            return PIDX_DRBG_PARAM_MIN_ENTROPYLEN;
                        break;
                    case 'n':
                        if (strcmp("oncelen", s + 5) == 0)
                            return PIDX_DRBG_PARAM_MIN_NONCELEN;
                    }
                    break;
                case 'i':
                    if (strcmp("um_length", s + 4) == 0)
                        return PIDX_DRBG_PARAM_MIN_LENGTH;
                }
            }
            break;
        case 'o':
            switch(s[2]) {
            default:
                break;
            case 'd':
                switch(s[3]) {
                default:
                    break;
                case 'e':
                    switch(s[4]) {
                    default:
                        break;
                    case '\0':
                        return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE;
                    }
                    break;
                case 'u':
                    if (strcmp("le-filename", s + 4) == 0)
                        return PIDX_PROV_PARAM_CORE_MODULE_FILENAME;
                }
            }
            break;
        case '\0':
            return PIDX_PKEY_PARAM_EC_CHAR2_M;
        }
        break;
    case 'n':
        switch(s[1]) {
        default:
            break;
        case 'a':
            if (strcmp("me", s + 2) == 0)
                return PIDX_STORE_PARAM_ISSUER;
            break;
        case 'o':
            switch(s[2]) {
            default:
                break;
            case 'n':
                switch(s[3]) {
                default:
                    break;
                case 'c':
                    switch(s[4]) {
                    default:
                        break;
                    case 'e':
                        switch(s[5]) {
                        default:
                            break;
                        case '-':
                            if (strcmp("type", s + 6) == 0)
                                return PIDX_SIGNATURE_PARAM_NONCE_TYPE;
                            break;
                        case '\0':
                            return PIDX_KDF_PARAM_HMACDRBG_NONCE;
                        }
                    }
                }
            }
            break;
        case 'u':
            if (strcmp("m", s + 2) == 0)
                return PIDX_CIPHER_PARAM_NUM;
            break;
        case '\0':
            return PIDX_KDF_PARAM_SCRYPT_N;
        }
        break;
    case 'o':
        switch(s[1]) {
        default:
            break;
        case 'a':
            if (strcmp("ep-label", s + 2) == 0)
                return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL;
            break;
        case 'p':
            switch(s[2]) {
            default:
                break;
            case 'e':
                switch(s[3]) {
                default:
                    break;
                case 'n':
                    if (strcmp("ssl-version", s + 4) == 0)
                        return PIDX_PROV_PARAM_CORE_VERSION;
                    break;
                case 'r':
                    if (strcmp("ation", s + 4) == 0)
                        return PIDX_KEM_PARAM_OPERATION;
                }
                break;
            case 't':
                if (strcmp("ions", s + 3) == 0)
                    return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS;
            }
            break;
        case 'r':
            if (strcmp("der", s + 2) == 0)
                return PIDX_PKEY_PARAM_EC_ORDER;
        }
        break;
    case 'p':
        switch(s[1]) {
        default:
            break;
        case '1':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_RSA_TEST_P1;
            }
            break;
        case '2':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_RSA_TEST_P2;
            }
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 'd':
                switch(s[3]) {
                default:
                    break;
                case '-':
                    switch(s[4]) {
                    default:
                        break;
                    case 'm':
                        if (strcmp("ode", s + 5) == 0)
                            return PIDX_PKEY_PARAM_PAD_MODE;
                        break;
                    case 't':
                        if (strcmp("ype", s + 5) == 0)
                            return PIDX_DIGEST_PARAM_PAD_TYPE;
                    }
                    break;
                case 'd':
                    if (strcmp("ing", s + 4) == 0)
                        return PIDX_CIPHER_PARAM_PADDING;
                    break;
                case '\0':
                    return PIDX_EXCHANGE_PARAM_PAD;
                }
                break;
            case 'r':
                switch(s[3]) {
                default:
                    break;
                case 't':
                    switch(s[4]) {
                    default:
                        break;
                    case 'y':
                        switch(s[5]) {
                        default:
                            break;
                        case 'u':
                            if (strcmp("-info", s + 6) == 0)
                                return PIDX_KDF_PARAM_X942_PARTYUINFO;
                            break;
                        case 'v':
                            if (strcmp("-info", s + 6) == 0)
                                return PIDX_KDF_PARAM_X942_PARTYVINFO;
                        }
                    }
                }
                break;
            case 's':
                if (strcmp("s", s + 3) == 0)
                    return PIDX_KDF_PARAM_PASSWORD;
            }
            break;
        case 'b':
            if (strcmp("its", s + 2) == 0)
                return PIDX_PKEY_PARAM_FFC_PBITS;
            break;
        case 'c':
            if (strcmp("ounter", s + 2) == 0)
                return PIDX_PKEY_PARAM_FFC_PCOUNTER;
            break;
        case 'k':
            if (strcmp("cs5", s + 2) == 0)
                return PIDX_KDF_PARAM_PKCS5;
            break;
        case 'o':
            switch(s[2]) {
            default:
                break;
            case 'i':
                if (strcmp("nt-format", s + 3) == 0)
                    return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT;
                break;
            case 't':
                if (strcmp("ential", s + 3) == 0)
                    return PIDX_GEN_PARAM_POTENTIAL;
            }
            break;
        case 'r':
            switch(s[2]) {
            default:
                break;
            case 'e':
                switch(s[3]) {
                default:
                    break;
                case 'd':
                    if (strcmp("iction_resistance", s + 4) == 0)
                        return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE;
                    break;
                case 'f':
                    if (strcmp("ix", s + 4) == 0)
                        return PIDX_KDF_PARAM_PREFIX;
                }
                break;
            case 'i':
                switch(s[3]) {
                default:
                    break;
                case 'm':
                    if (strcmp("es", s + 4) == 0)
                        return PIDX_PKEY_PARAM_RSA_PRIMES;
                    break;
                case 'v':
                    switch(s[4]) {
                    default:
                        break;
                    case '_':
                        if (strcmp("len", s + 5) == 0)
                            return PIDX_PKEY_PARAM_DH_PRIV_LEN;
                        break;
                    case '\0':
                        return PIDX_PKEY_PARAM_PRIV_KEY;
                    }
                }
                break;
            case 'o':
                switch(s[3]) {
                default:
                    break;
                case 'p':
                    if (strcmp("erties", s + 4) == 0)
                        return PIDX_ALG_PARAM_PROPERTIES;
                    break;
                case 'v':
                    if (strcmp("ider-name", s + 4) == 0)
                        return PIDX_PROV_PARAM_CORE_PROV_NAME;
                }
            }
            break;
        case 'u':
            if (strcmp("b", s + 2) == 0)
                return PIDX_PKEY_PARAM_PUB_KEY;
            break;
        case '\0':
            return PIDX_PKEY_PARAM_EC_P;
        }
        break;
    case 'q':
        switch(s[1]) {
        default:
            break;
        case '1':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_RSA_TEST_Q1;
            }
            break;
        case '2':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_RSA_TEST_Q2;
            }
            break;
        case 'b':
            if (strcmp("its", s + 2) == 0)
                return PIDX_PKEY_PARAM_FFC_QBITS;
            break;
        case '\0':
            return PIDX_PKEY_PARAM_FFC_Q;
            break;
        case 'x':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_EC_PUB_X;
            }
            break;
        case 'y':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_EC_PUB_Y;
            }
        }
        break;
    case 'r':
        switch(s[1]) {
        default:
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 'n':
                switch(s[3]) {
                default:
                    break;
                case 'd':
                    switch(s[4]) {
                    default:
                        break;
                    case 'k':
                        if (strcmp("ey", s + 5) == 0)
                            return PIDX_CIPHER_PARAM_RANDOM_KEY;
                        break;
                    case 'o':
                        if (strcmp("m_data", s + 5) == 0)
                            return PIDX_DRBG_PARAM_RANDOM_DATA;
                    }
                }
            }
            break;
        case 'e':
            switch(s[2]) {
            default:
                break;
            case 'a':
                switch(s[3]) {
                default:
                    break;
                case 'd':
                    switch(s[4]) {
                    default:
                        break;
                    case '_':
                        switch(s[5]) {
                        default:
                            break;
                        case 'a':
                            if (strcmp("head", s + 6) == 0)
                                return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD;
                            break;
                        case 'b':
                            if (strcmp("uffer_len", s + 6) == 0)
                                return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN;
                        }
                    }
                }
                break;
            case 'f':
                if (strcmp("erence", s + 3) == 0)
                    return PIDX_OBJECT_PARAM_REFERENCE;
                break;
            case 's':
                switch(s[3]) {
                default:
                    break;
                case 'e':
                    switch(s[4]) {
                    default:
                        break;
                    case 'e':
                        switch(s[5]) {
                        default:
                            break;
                        case 'd':
                            switch(s[6]) {
                            default:
                                break;
                            case '_':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'c':
                                    if (strcmp("ounter", s + 8) == 0)
                                        return PIDX_DRBG_PARAM_RESEED_COUNTER;
                                    break;
                                case 'r':
                                    if (strcmp("equests", s + 8) == 0)
                                        return PIDX_DRBG_PARAM_RESEED_REQUESTS;
                                    break;
                                case 't':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'i':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 'm':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case 'e':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '_':
                                                    if (strcmp("interval", s + 12) == 0)
                                                        return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL;
                                                    break;
                                                case '\0':
                                                    return PIDX_DRBG_PARAM_RESEED_TIME;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            break;
        case 'o':
            if (strcmp("unds", s + 2) == 0)
                return PIDX_CIPHER_PARAM_ROUNDS;
            break;
        case 's':
            switch(s[2]) {
            default:
                break;
            case 'a':
                switch(s[3]) {
                default:
                    break;
                case '-':
                    switch(s[4]) {
                    default:
                        break;
                    case 'c':
                        switch(s[5]) {
                        default:
                            break;
                        case 'o':
                            switch(s[6]) {
                            default:
                                break;
                            case 'e':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'f':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'f':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 'i':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case 'c':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 'i':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'e':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 'n':
                                                            switch(s[14]) {
                                                            default:
                                                                break;
                                                            case 't':
                                                                switch(s[15]) {
                                                                default:
                                                                    break;
                                                                case '1':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT1;
                                                                    }
                                                                    break;
                                                                case '2':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT2;
                                                                    }
                                                                    break;
                                                                case '3':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT3;
                                                                    }
                                                                    break;
                                                                case '4':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT4;
                                                                    }
                                                                    break;
                                                                case '5':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT5;
                                                                    }
                                                                    break;
                                                                case '6':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT6;
                                                                    }
                                                                    break;
                                                                case '7':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT7;
                                                                    }
                                                                    break;
                                                                case '8':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT8;
                                                                    }
                                                                    break;
                                                                case '9':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case '\0':
                                                                        return PIDX_PKEY_PARAM_RSA_COEFFICIENT9;
                                                                    }
                                                                    break;
                                                                case '\0':
                                                                    return PIDX_PKEY_PARAM_RSA_COEFFICIENT;
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    case 'e':
                        switch(s[5]) {
                        default:
                            break;
                        case 'x':
                            switch(s[6]) {
                            default:
                                break;
                            case 'p':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'o':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'n':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 'e':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case 'n':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 't':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case '1':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '0':
                                                            switch(s[14]) {
                                                            default:
                                                                break;
                                                            case '\0':
                                                                return PIDX_PKEY_PARAM_RSA_EXPONENT10;
                                                            }
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT1;
                                                        }
                                                        break;
                                                    case '2':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT2;
                                                        }
                                                        break;
                                                    case '3':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT3;
                                                        }
                                                        break;
                                                    case '4':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT4;
                                                        }
                                                        break;
                                                    case '5':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT5;
                                                        }
                                                        break;
                                                    case '6':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT6;
                                                        }
                                                        break;
                                                    case '7':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT7;
                                                        }
                                                        break;
                                                    case '8':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT8;
                                                        }
                                                        break;
                                                    case '9':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case '\0':
                                                            return PIDX_PKEY_PARAM_RSA_EXPONENT9;
                                                        }
                                                        break;
                                                    case '\0':
                                                        return PIDX_PKEY_PARAM_RSA_EXPONENT;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    case 'f':
                        switch(s[5]) {
                        default:
                            break;
                        case 'a':
                            switch(s[6]) {
                            default:
                                break;
                            case 'c':
                                switch(s[7]) {
                                default:
                                    break;
                                case 't':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'o':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 'r':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case '1':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '0':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case '\0':
                                                        return PIDX_PKEY_PARAM_RSA_FACTOR10;
                                                    }
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR1;
                                                }
                                                break;
                                            case '2':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR2;
                                                }
                                                break;
                                            case '3':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR3;
                                                }
                                                break;
                                            case '4':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR4;
                                                }
                                                break;
                                            case '5':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR5;
                                                }
                                                break;
                                            case '6':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR6;
                                                }
                                                break;
                                            case '7':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR7;
                                                }
                                                break;
                                            case '8':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR8;
                                                }
                                                break;
                                            case '9':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case '\0':
                                                    return PIDX_PKEY_PARAM_RSA_FACTOR9;
                                                }
                                                break;
                                            case '\0':
                                                return PIDX_PKEY_PARAM_RSA_FACTOR;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            break;
        case '\0':
            return PIDX_KDF_PARAM_KBKDF_R;
        }
        break;
    case 's':
        switch(s[1]) {
        default:
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 'f':
                if (strcmp("eprime-generator", s + 3) == 0)
                    return PIDX_PKEY_PARAM_DH_GENERATOR;
                break;
            case 'l':
                switch(s[3]) {
                default:
                    break;
                case 't':
                    switch(s[4]) {
                    default:
                        break;
                    case 'l':
                        if (strcmp("en", s + 5) == 0)
                            return PIDX_SIGNATURE_PARAM_PSS_SALTLEN;
                        break;
                    case '\0':
                        return PIDX_MAC_PARAM_SALT;
                    }
                }
                break;
            case 'v':
                if (strcmp("e-parameters", s + 3) == 0)
                    return PIDX_ENCODER_PARAM_SAVE_PARAMETERS;
            }
            break;
        case 'e':
            switch(s[2]) {
            default:
                break;
            case 'c':
                switch(s[3]) {
                default:
                    break;
                case 'r':
                    if (strcmp("et", s + 4) == 0)
                        return PIDX_KDF_PARAM_SECRET;
                    break;
                case 'u':
                    switch(s[4]) {
                    default:
                        break;
                    case 'r':
                        switch(s[5]) {
                        default:
                            break;
                        case 'i':
                            switch(s[6]) {
                            default:
                                break;
                            case 't':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'y':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case '-':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 'b':
                                            if (strcmp("its", s + 10) == 0)
                                                return PIDX_PKEY_PARAM_SECURITY_BITS;
                                            break;
                                        case 'c':
                                            if (strcmp("hecks", s + 10) == 0)
                                                return PIDX_PROV_PARAM_SECURITY_CHECKS;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                break;
            case 'e':
                if (strcmp("d", s + 3) == 0)
                    return PIDX_PKEY_PARAM_FFC_SEED;
                break;
            case 'r':
                if (strcmp("ial", s + 3) == 0)
                    return PIDX_STORE_PARAM_SERIAL;
                break;
            case 's':
                if (strcmp("sion_id", s + 3) == 0)
                    return PIDX_KDF_PARAM_SSHKDF_SESSION_ID;
            }
            break;
        case 'i':
            if (strcmp("ze", s + 2) == 0)
                return PIDX_DIGEST_PARAM_SIZE;
            break;
        case 'p':
            if (strcmp("eed", s + 2) == 0)
                return PIDX_CIPHER_PARAM_SPEED;
            break;
        case 's':
            if (strcmp("l3-ms", s + 2) == 0)
                return PIDX_DIGEST_PARAM_SSL3_MS;
            break;
        case 't':
            switch(s[2]) {
            default:
                break;
            case '-':
                switch(s[3]) {
                default:
                    break;
                case 'd':
                    if (strcmp("esc", s + 4) == 0)
                        return PIDX_PROV_PARAM_SELF_TEST_DESC;
                    break;
                case 'p':
                    if (strcmp("hase", s + 4) == 0)
                        return PIDX_PROV_PARAM_SELF_TEST_PHASE;
                    break;
                case 't':
                    if (strcmp("ype", s + 4) == 0)
                        return PIDX_PROV_PARAM_SELF_TEST_TYPE;
                }
                break;
            case 'a':
                switch(s[3]) {
                default:
                    break;
                case 't':
                    switch(s[4]) {
                    default:
                        break;
                    case 'e':
                        switch(s[5]) {
                        default:
                            break;
                        case '\0':
                            return PIDX_RAND_PARAM_STATE;
                        }
                        break;
                    case 'u':
                        if (strcmp("s", s + 5) == 0)
                            return PIDX_PROV_PARAM_STATUS;
                    }
                }
                break;
            case 'r':
                switch(s[3]) {
                default:
                    break;
                case 'e':
                    switch(s[4]) {
                    default:
                        break;
                    case 'a':
                        if (strcmp("m_mac", s + 5) == 0)
                            return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC;
                        break;
                    case 'n':
                        if (strcmp("gth", s + 5) == 0)
                            return PIDX_RAND_PARAM_STRENGTH;
                    }
                }
            }
            break;
        case 'u':
            switch(s[2]) {
            default:
                break;
            case 'b':
                if (strcmp("ject", s + 3) == 0)
                    return PIDX_STORE_PARAM_SUBJECT;
                break;
            case 'p':
                switch(s[3]) {
                default:
                    break;
                case 'p':
                    switch(s[4]) {
                    default:
                        break;
                    case '-':
                        switch(s[5]) {
                        default:
                            break;
                        case 'p':
                            switch(s[6]) {
                            default:
                                break;
                            case 'r':
                                if (strcmp("ivinfo", s + 7) == 0)
                                    return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO;
                                break;
                            case 'u':
                                if (strcmp("binfo", s + 7) == 0)
                                    return PIDX_KDF_PARAM_X942_SUPP_PUBINFO;
                            }
                        }
                    }
                }
            }
        }
        break;
    case 't':
        switch(s[1]) {
        default:
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 'g':
                switch(s[3]) {
                default:
                    break;
                case 'l':
                    if (strcmp("en", s + 4) == 0)
                        return PIDX_CIPHER_PARAM_AEAD_TAGLEN;
                    break;
                case '\0':
                    return PIDX_CIPHER_PARAM_AEAD_TAG;
                }
            }
            break;
        case 'e':
            switch(s[2]) {
            default:
                break;
            case 's':
                switch(s[3]) {
                default:
                    break;
                case 't':
                    switch(s[4]) {
                    default:
                        break;
                    case '_':
                        switch(s[5]) {
                        default:
                            break;
                        case 'e':
                            if (strcmp("ntropy", s + 6) == 0)
                                return PIDX_RAND_PARAM_TEST_ENTROPY;
                            break;
                        case 'n':
                            if (strcmp("once", s + 6) == 0)
                                return PIDX_RAND_PARAM_TEST_NONCE;
                        }
                    }
                }
            }
            break;
        case 'h':
            if (strcmp("reads", s + 2) == 0)
                return PIDX_KDF_PARAM_THREADS;
            break;
        case 'l':
            switch(s[2]) {
            default:
                break;
            case 's':
                switch(s[3]) {
                default:
                    break;
                case '-':
                    switch(s[4]) {
                    default:
                        break;
                    case 'c':
                        if (strcmp("lient-version", s + 5) == 0)
                            return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION;
                        break;
                    case 'd':
                        if (strcmp("ata-size", s + 5) == 0)
                            return PIDX_MAC_PARAM_TLS_DATA_SIZE;
                        break;
                    case 'g':
                        switch(s[5]) {
                        default:
                            break;
                        case 'r':
                            switch(s[6]) {
                            default:
                                break;
                            case 'o':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'u':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'p':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case '-':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case 'a':
                                                if (strcmp("lg", s + 11) == 0)
                                                    return PIDX_CAPABILITY_TLS_GROUP_ALG;
                                                break;
                                            case 'i':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 'd':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case '\0':
                                                        return PIDX_CAPABILITY_TLS_GROUP_ID;
                                                    }
                                                    break;
                                                case 's':
                                                    if (strcmp("-kem", s + 12) == 0)
                                                        return PIDX_CAPABILITY_TLS_GROUP_IS_KEM;
                                                }
                                                break;
                                            case 'n':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 'a':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'm':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 'e':
                                                            switch(s[14]) {
                                                            default:
                                                                break;
                                                            case '-':
                                                                if (strcmp("internal", s + 15) == 0)
                                                                    return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL;
                                                                break;
                                                            case '\0':
                                                                return PIDX_CAPABILITY_TLS_GROUP_NAME;
                                                            }
                                                        }
                                                    }
                                                }
                                                break;
                                            case 's':
                                                if (strcmp("ec-bits", s + 11) == 0)
                                                    return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    case 'm':
                        switch(s[5]) {
                        default:
                            break;
                        case 'a':
                            switch(s[6]) {
                            default:
                                break;
                            case 'c':
                                switch(s[7]) {
                                default:
                                    break;
                                case '-':
                                    if (strcmp("size", s + 8) == 0)
                                        return PIDX_CIPHER_PARAM_TLS_MAC_SIZE;
                                    break;
                                case '\0':
                                    return PIDX_CIPHER_PARAM_TLS_MAC;
                                }
                                break;
                            case 'x':
                                switch(s[7]) {
                                default:
                                    break;
                                case '-':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'd':
                                        if (strcmp("tls", s + 9) == 0)
                                            return PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS;
                                        break;
                                    case 't':
                                        if (strcmp("ls", s + 9) == 0)
                                            return PIDX_CAPABILITY_TLS_GROUP_MAX_TLS;
                                    }
                                }
                            }
                            break;
                        case 'i':
                            switch(s[6]) {
                            default:
                                break;
                            case 'n':
                                switch(s[7]) {
                                default:
                                    break;
                                case '-':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'd':
                                        if (strcmp("tls", s + 9) == 0)
                                            return PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS;
                                        break;
                                    case 't':
                                        if (strcmp("ls", s + 9) == 0)
                                            return PIDX_CAPABILITY_TLS_GROUP_MIN_TLS;
                                    }
                                }
                            }
                            break;
                        case 'u':
                            if (strcmp("lti", s + 6) == 0)
                                return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK;
                        }
                        break;
                    case 'n':
                        if (strcmp("egotiated-version", s + 5) == 0)
                            return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION;
                        break;
                    case 's':
                        switch(s[5]) {
                        default:
                            break;
                        case 'i':
                            switch(s[6]) {
                            default:
                                break;
                            case 'g':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'a':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'l':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 'g':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case '-':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 'c':
                                                    if (strcmp("ode-point", s + 12) == 0)
                                                        return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT;
                                                    break;
                                                case 'h':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'a':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 's':
                                                            switch(s[14]) {
                                                            default:
                                                                break;
                                                            case 'h':
                                                                switch(s[15]) {
                                                                default:
                                                                    break;
                                                                case '-':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case 'n':
                                                                        if (strcmp("ame", s + 17) == 0)
                                                                            return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME;
                                                                        break;
                                                                    case 'o':
                                                                        if (strcmp("id", s + 17) == 0)
                                                                            return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID;
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                    break;
                                                case 'i':
                                                    if (strcmp("ana-name", s + 12) == 0)
                                                        return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME;
                                                    break;
                                                case 'k':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'e':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 'y':
                                                            switch(s[14]) {
                                                            default:
                                                                break;
                                                            case 't':
                                                                switch(s[15]) {
                                                                default:
                                                                    break;
                                                                case 'y':
                                                                    switch(s[16]) {
                                                                    default:
                                                                        break;
                                                                    case 'p':
                                                                        switch(s[17]) {
                                                                        default:
                                                                            break;
                                                                        case 'e':
                                                                            switch(s[18]) {
                                                                            default:
                                                                                break;
                                                                            case '-':
                                                                                if (strcmp("oid", s + 19) == 0)
                                                                                    return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID;
                                                                                break;
                                                                            case '\0':
                                                                                return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE;
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                    break;
                                                case 'n':
                                                    if (strcmp("ame", s + 12) == 0)
                                                        return PIDX_CAPABILITY_TLS_SIGALG_NAME;
                                                    break;
                                                case 'o':
                                                    if (strcmp("id", s + 12) == 0)
                                                        return PIDX_CAPABILITY_TLS_SIGALG_OID;
                                                    break;
                                                case 's':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'e':
                                                        if (strcmp("c-bits", s + 13) == 0)
                                                            return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS;
                                                        break;
                                                    case 'i':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 'g':
                                                            switch(s[14]) {
                                                            default:
                                                                break;
                                                            case '-':
                                                                switch(s[15]) {
                                                                default:
                                                                    break;
                                                                case 'n':
                                                                    if (strcmp("ame", s + 16) == 0)
                                                                        return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME;
                                                                    break;
                                                                case 'o':
                                                                    if (strcmp("id", s + 16) == 0)
                                                                        return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID;
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    case 'v':
                        if (strcmp("ersion", s + 5) == 0)
                            return PIDX_CIPHER_PARAM_TLS_VERSION;
                    }
                    break;
                case '1':
                    switch(s[4]) {
                    default:
                        break;
                    case '-':
                        if (strcmp("prf-ems-check", s + 5) == 0)
                            return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK;
                        break;
                    case 'm':
                        switch(s[5]) {
                        default:
                            break;
                        case 'u':
                            switch(s[6]) {
                            default:
                                break;
                            case 'l':
                                switch(s[7]) {
                                default:
                                    break;
                                case 't':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case 'i':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case '_':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case 'a':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 'a':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'd':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 'p':
                                                            if (strcmp("acklen", s + 14) == 0)
                                                                return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN;
                                                            break;
                                                        case '\0':
                                                            return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD;
                                                        }
                                                    }
                                                }
                                                break;
                                            case 'e':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 'n':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'c':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 'i':
                                                            if (strcmp("n", s + 14) == 0)
                                                                return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN;
                                                            break;
                                                        case 'l':
                                                            if (strcmp("en", s + 14) == 0)
                                                                return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN;
                                                            break;
                                                        case '\0':
                                                            return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC;
                                                        }
                                                    }
                                                }
                                                break;
                                            case 'i':
                                                if (strcmp("nterleave", s + 11) == 0)
                                                    return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE;
                                                break;
                                            case 'm':
                                                switch(s[11]) {
                                                default:
                                                    break;
                                                case 'a':
                                                    switch(s[12]) {
                                                    default:
                                                        break;
                                                    case 'x':
                                                        switch(s[13]) {
                                                        default:
                                                            break;
                                                        case 'b':
                                                            if (strcmp("ufsz", s + 14) == 0)
                                                                return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE;
                                                            break;
                                                        case 's':
                                                            if (strcmp("ndfrag", s + 14) == 0)
                                                                return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    break;
                case 'a':
                    switch(s[4]) {
                    default:
                        break;
                    case 'a':
                        switch(s[5]) {
                        default:
                            break;
                        case 'd':
                            switch(s[6]) {
                            default:
                                break;
                            case 'p':
                                if (strcmp("ad", s + 7) == 0)
                                    return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD;
                                break;
                            case '\0':
                                return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD;
                            }
                        }
                    }
                    break;
                case 'i':
                    switch(s[4]) {
                    default:
                        break;
                    case 'v':
                        switch(s[5]) {
                        default:
                            break;
                        case 'f':
                            if (strcmp("ixed", s + 6) == 0)
                                return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED;
                            break;
                        case 'g':
                            if (strcmp("en", s + 6) == 0)
                                return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN;
                            break;
                        case 'i':
                            if (strcmp("nv", s + 6) == 0)
                                return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV;
                        }
                    }
                    break;
                case 't':
                    if (strcmp("ree", s + 4) == 0)
                        return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE;
                }
            }
            break;
        case 'p':
            switch(s[2]) {
            default:
                break;
            case '\0':
                return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS;
            }
            break;
        case 'y':
            if (strcmp("pe", s + 2) == 0)
                return PIDX_OBJECT_PARAM_TYPE;
        }
        break;
    case 'u':
        switch(s[1]) {
        default:
            break;
        case 'k':
            if (strcmp("m", s + 2) == 0)
                return PIDX_KDF_PARAM_UKM;
            break;
        case 'p':
            if (strcmp("dated-iv", s + 2) == 0)
                return PIDX_CIPHER_PARAM_UPDATED_IV;
            break;
        case 's':
            switch(s[2]) {
            default:
                break;
            case 'e':
                switch(s[3]) {
                default:
                    break;
                case '-':
                    switch(s[4]) {
                    default:
                        break;
                    case 'b':
                        if (strcmp("its", s + 5) == 0)
                            return PIDX_CIPHER_PARAM_USE_BITS;
                        break;
                    case 'c':
                        if (strcmp("ofactor-flag", s + 5) == 0)
                            return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG;
                        break;
                    case 'k':
                        if (strcmp("eybits", s + 5) == 0)
                            return PIDX_KDF_PARAM_X942_USE_KEYBITS;
                        break;
                    case 'l':
                        switch(s[5]) {
                        default:
                            break;
                        case '\0':
                            return PIDX_KDF_PARAM_KBKDF_USE_L;
                        }
                        break;
                    case 's':
                        if (strcmp("eparator", s + 5) == 0)
                            return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR;
                    }
                    break;
                case '_':
                    switch(s[4]) {
                    default:
                        break;
                    case 'd':
                        if (strcmp("erivation_function", s + 5) == 0)
                            return PIDX_DRBG_PARAM_USE_DF;
                        break;
                    case 'e':
                        if (strcmp("tm", s + 5) == 0)
                            return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM;
                    }
                }
            }
        }
        break;
    case 'v':
        switch(s[1]) {
        default:
            break;
        case 'a':
            switch(s[2]) {
            default:
                break;
            case 'l':
                switch(s[3]) {
                default:
                    break;
                case 'i':
                    switch(s[4]) {
                    default:
                        break;
                    case 'd':
                        switch(s[5]) {
                        default:
                            break;
                        case 'a':
                            switch(s[6]) {
                            default:
                                break;
                            case 't':
                                switch(s[7]) {
                                default:
                                    break;
                                case 'e':
                                    switch(s[8]) {
                                    default:
                                        break;
                                    case '-':
                                        switch(s[9]) {
                                        default:
                                            break;
                                        case 'g':
                                            switch(s[10]) {
                                            default:
                                                break;
                                            case '\0':
                                                return PIDX_PKEY_PARAM_FFC_VALIDATE_G;
                                            }
                                            break;
                                        case 'l':
                                            if (strcmp("egacy", s + 10) == 0)
                                                return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY;
                                            break;
                                        case 'p':
                                            if (strcmp("q", s + 10) == 0)
                                                return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            break;
        case 'e':
            if (strcmp("rsion", s + 2) == 0)
                return PIDX_PROV_PARAM_VERSION;
        }
        break;
    case 'x':
        switch(s[1]) {
        default:
            break;
        case 'c':
            if (strcmp("ghash", s + 2) == 0)
                return PIDX_KDF_PARAM_SSHKDF_XCGHASH;
            break;
        case 'o':
            switch(s[2]) {
            default:
                break;
            case 'f':
                switch(s[3]) {
                default:
                    break;
                case 'l':
                    if (strcmp("en", s + 4) == 0)
                        return PIDX_DIGEST_PARAM_XOFLEN;
                    break;
                case '\0':
                    return PIDX_DIGEST_PARAM_XOF;
                }
            }
            break;
        case 'p':
            switch(s[2]) {
            default:
                break;
            case '1':
                switch(s[3]) {
                default:
                    break;
                case '\0':
                    return PIDX_PKEY_PARAM_RSA_TEST_XP1;
                }
                break;
            case '2':
                switch(s[3]) {
                default:
                    break;
                case '\0':
                    return PIDX_PKEY_PARAM_RSA_TEST_XP2;
                }
                break;
            case '\0':
                return PIDX_PKEY_PARAM_RSA_TEST_XP;
            }
            break;
        case 'q':
            switch(s[2]) {
            default:
                break;
            case '1':
                switch(s[3]) {
                default:
                    break;
                case '\0':
                    return PIDX_PKEY_PARAM_RSA_TEST_XQ1;
                }
                break;
            case '2':
                switch(s[3]) {
                default:
                    break;
                case '\0':
                    return PIDX_PKEY_PARAM_RSA_TEST_XQ2;
                }
                break;
            case '\0':
                return PIDX_PKEY_PARAM_RSA_TEST_XQ;
            }
            break;
        case 't':
            if (strcmp("s_standard", s + 2) == 0)
                return PIDX_CIPHER_PARAM_XTS_STANDARD;
        }
    }
    return -1;
}

/* End of TRIE */