/*
 * Automatically generated by asn1_compiler.  Do not edit
 *
 * ASN.1 parser for cifs_spnego_negtokeninit
 */
#include <linux/asn1_ber_bytecode.h>
#include "cifs_spnego_negtokeninit.asn1.h"

enum cifs_spnego_negtokeninit_actions {
	ACT_cifs_gssapi_this_mech = 0,
	ACT_cifs_neg_token_init_mech_type = 1,
	NR__cifs_spnego_negtokeninit_actions = 2
};

static const asn1_action_t cifs_spnego_negtokeninit_action_table[NR__cifs_spnego_negtokeninit_actions] = {
	[   0] = cifs_gssapi_this_mech,
	[   1] = cifs_neg_token_init_mech_type,
};

static const unsigned char cifs_spnego_negtokeninit_machine[] = {
	// GSSAPI
	[   0] = ASN1_OP_MATCH,
	[   1] = _tagn(APPL, CONS,  0),
	[   2] =  ASN1_OP_MATCH_ACT,		// thisMech
	[   3] =  _tag(UNIV, PRIM, OID),
	[   4] =  _action(ACT_cifs_gssapi_this_mech),
	// NegotiationToken
	[   5] =  ASN1_OP_MATCH_JUMP_OR_SKIP,		// negTokenInit
	[   6] =  _tagn(CONT, CONS,  0),
	[   7] =  _jump_target(14),
	[   8] =  ASN1_OP_COND_MATCH_JUMP_OR_SKIP,		// negTokenTarg
	[   9] =  _tagn(CONT, CONS,  1),
	[  10] =  _jump_target(34),
	[  11] =  ASN1_OP_COND_FAIL,
	[  12] = ASN1_OP_END_SEQ,
	[  13] = ASN1_OP_COMPLETE,

	// NegTokenInit2
	[  14] =  ASN1_OP_MATCH,
	[  15] =  _tag(UNIV, CONS, SEQ),
	[  16] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// mechTypes
	[  17] =   _tagn(CONT, CONS,  0),
	[  18] =   _jump_target(37),
	[  19] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// reqFlags
	[  20] =   _tagn(CONT, CONS,  1),
	[  21] =   _jump_target(46),
	[  22] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// mechToken
	[  23] =   _tagn(CONT, CONS,  2),
	[  24] =   _jump_target(50),
	[  25] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// negHints
	[  26] =   _tagn(CONT, CONS,  3),
	[  27] =   _jump_target(54),
	[  28] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// mechListMIC
	[  29] =   _tagn(CONT, CONS,  3),
	[  30] =   _jump_target(65),
	[  31] =  ASN1_OP_END_SEQ,
	[  32] = ASN1_OP_END_SEQ,
	[  33] = ASN1_OP_RETURN,

	[  34] =  ASN1_OP_MATCH_ANY,		// negTokenTarg
	[  35] = ASN1_OP_END_SEQ,
	[  36] = ASN1_OP_RETURN,

	// MechTypeList
	[  37] =  ASN1_OP_MATCH,
	[  38] =  _tag(UNIV, CONS, SEQ),
	// MechType
	[  39] =   ASN1_OP_MATCH_ACT,
	[  40] =   _tag(UNIV, PRIM, OID),
	[  41] =   _action(ACT_cifs_neg_token_init_mech_type),
	[  42] =  ASN1_OP_END_SEQ_OF,
	[  43] =  _jump_target(39),
	[  44] = ASN1_OP_END_SEQ,
	[  45] = ASN1_OP_RETURN,

	[  46] =  ASN1_OP_MATCH,		// reqFlags
	[  47] =  _tag(UNIV, PRIM, BTS),
	[  48] = ASN1_OP_END_SEQ,
	[  49] = ASN1_OP_RETURN,

	[  50] =  ASN1_OP_MATCH,		// mechToken
	[  51] =  _tag(UNIV, PRIM, OTS),
	[  52] = ASN1_OP_END_SEQ,
	[  53] = ASN1_OP_RETURN,

	// NegHints
	[  54] =  ASN1_OP_MATCH,
	[  55] =  _tag(UNIV, CONS, SEQ),
	[  56] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// hintName
	[  57] =   _tagn(CONT, CONS,  0),
	[  58] =   _jump_target(69),
	[  59] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// hintAddress
	[  60] =   _tagn(CONT, CONS,  1),
	[  61] =   _jump_target(73),
	[  62] =  ASN1_OP_END_SEQ,
	[  63] = ASN1_OP_END_SEQ,
	[  64] = ASN1_OP_RETURN,

	[  65] =  ASN1_OP_MATCH,		// mechListMIC
	[  66] =  _tag(UNIV, PRIM, OTS),
	[  67] = ASN1_OP_END_SEQ,
	[  68] = ASN1_OP_RETURN,

	[  69] =  ASN1_OP_MATCH,		// hintName
	[  70] =  _tag(UNIV, PRIM, GENSTR),
	[  71] = ASN1_OP_END_SEQ,
	[  72] = ASN1_OP_RETURN,

	[  73] =  ASN1_OP_MATCH,		// hintAddress
	[  74] =  _tag(UNIV, PRIM, OTS),
	[  75] = ASN1_OP_END_SEQ,
	[  76] = ASN1_OP_RETURN,
};

const struct asn1_decoder cifs_spnego_negtokeninit_decoder = {
	.machine = cifs_spnego_negtokeninit_machine,
	.machlen = sizeof(cifs_spnego_negtokeninit_machine),
	.actions = cifs_spnego_negtokeninit_action_table,
};
