structProtobufCMessageDescriptor { /** Magic value checked to ensure that the API is used correctly. */ uint32_t magic;
/** The qualified name (e.g., "namespace.Type"). */ constchar *name; /** The unqualified name as given in the .proto file (e.g., "Type"). */ constchar *short_name; /** Identifier used in generated C code. */ constchar *c_name; /** The dot-separated namespace. */ constchar *package_name;
/** * Size in bytes of the C structure representing an instance of this * type of message. */ size_t sizeof_message;
/** Number of elements in `fields`. */ unsigned n_fields; /** Field descriptors, sorted by tag number. */ const ProtobufCFieldDescriptor *fields; /** Used for looking up fields by name. */ constunsigned *fields_sorted_by_name;
/** Number of elements in `field_ranges`. */ unsigned n_field_ranges; /** Used for looking up fields by id. */ const ProtobufCIntRange *field_ranges;
structProtobufCFieldDescriptor { /** Name of the field as given in the .proto file. */ constchar *name;
/** Tag value of the field as given in the .proto file. */ uint32_t id;
/** Whether the field is `REQUIRED`, `OPTIONAL`, or `REPEATED`. */ ProtobufCLabel label;
/** The type of the field. */ ProtobufCType type;
/** * The offset in bytes of the message's C structure's quantifier field * (the `has_MEMBER` field for optional members or the `n_MEMBER` field * for repeated members or the case enum for oneofs). */ unsigned quantifier_offset;
/** * The offset in bytes into the message's C structure for the member * itself. */ unsigned offset;
/** * A type-specific descriptor. * * If `type` is `PROTOBUF_C_TYPE_ENUM`, then `descriptor` points to the * corresponding `ProtobufCEnumDescriptor`. * * If `type` is `PROTOBUF_C_TYPE_MESSAGE`, then `descriptor` points to * the corresponding `ProtobufCMessageDescriptor`. * * Otherwise this field is NULL. */ constvoid *descriptor; /* for MESSAGE and ENUM types */
/** The default value for this field, if defined. May be NULL. */ constvoid *default_value;
/** * A flag word. Zero or more of the bits defined in the * `ProtobufCFieldFlag` enum may be set. */ uint32_t flags;
/** Reserved for future use. */ unsigned reserved_flags; /** Reserved for future use. */ void *reserved2; /** Reserved for future use. */ void *reserved3; };
typedefenum { /** A well-formed message must have exactly one of this field. */ PROTOBUF_C_LABEL_REQUIRED,
/** * A well-formed message can have zero or one of this field (but not * more than one). */ PROTOBUF_C_LABEL_OPTIONAL,
/** * This field can be repeated any number of times (including zero) in a * well-formed message. The order of the repeated values will be * preserved. */ PROTOBUF_C_LABEL_REPEATED,
/** * This field has no label. This is valid only in proto3 and is * equivalent to OPTIONAL but no "has" quantifier will be consulted. */ PROTOBUF_C_LABEL_NONE, } ProtobufCLabel;
structProtobufCMessage { /** The descriptor for this message type. */ void *descriptor; /** The number of elements in `unknown_fields`. */ unsigned n_unknown_fields; /** The fields that weren't recognized by the parser. */ void *unknown_fields; };
1 2 3 4
structProtobufCBinaryData { size_t len; /**< Number of bytes in the `data` field. */ uint8_t *data; /**< Data bytes. */ };
v3[1] = __readfsqword(0x28u); sub_16FE(a1, a2, a3); puts("DO U love xiao/a/giao?"); while ( 1 ) { __isoc99_scanf("%llx", v3); if ( (char *)v3[0] == "yes" ) { puts("I'll give you a replacement egg"); sub_1D96(); } else { puts("I won't even give you eggs to replenish"); } __isoc99_scanf("%d", &dword_5008); if ( dword_5008 <= 255 ) printf("%p", &dword_5008); } }