pub fn new() -> Self {
        // Big subgroup of the BLS12-381 Elliptic Curve.
        // Its order's factorization is: 11 * 10177 * 859267 * 52437899 * 52435875175126190479447740508185965837690552500527637822603658699938581184513.
        // We'll take the first three factors to form the subgroup we are going to attack.
        let big_group_order = U384::from_hex_unchecked(
            "1FB322654A7CEF70462F7D205CF17F1D6B52ECA5FE8D9BBD809536AAD8A973FFF0AAAAAA5555AAAB",
        );

        // Generator of the big group.
        // Constant taken from https://hackmd.io/@benjaminion/bls12-381#Generators.
        let big_group_generator = ShortWeierstrassProjectivePoint::<BLS12381Curve>::from_affine(
            FieldElement::<BLS12381PrimeField>::from_hex_unchecked("04"),
            FieldElement::<BLS12381PrimeField>::from_hex_unchecked("0a989badd40d6212b33cffc3f3763e9bc760f988c9926b26da9dd85e928483446346b8ed00e1de5d5ea93e354abe706c"),
        ).unwrap();

        // We take the first three factors of the big group order, forming the order of a subgroup.
        // 96192362849 = 11 * 10177 * 859267.
        let subgroup_order = 96192362849u64;

        let subgroup_order_factors = [11u64, 10177u64, 859267u64];

        // We construct the generator 'h' of the subgroup using:
        // h = g^{n/s}, where 'g' is the big group generator, 'n' is its order and 's' the subgroup order.
        let quotient = big_group_order.div_rem(&U384::from(subgroup_order)).0;
        let subgroup_generator = big_group_generator.operate_with_self(quotient);

        Self {
            order: subgroup_order,
            order_factors: subgroup_order_factors,
            generator: subgroup_generator,
        }
    }
Creates a new subgroup of the BLS12-381 curve with a smooth order
that is suitable for the Pohlig-Hellman algorithm.
examples/pohlig-hellman-attack/src/pohlig_hellman.rs