<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def CrowdsaleRegister(self, wallet, register_addresses, from_addr=None):
 """ Register for a crowd sale. Args: wallet (neo.Wallets.Wallet):
 a wallet instance. register_addresses (list):
 list of public addresses to register for the sale. Returns: tuple: InvocationTransaction: the transaction. int: the transaction fee. list: the neo VM evaluation stack results. """

        invoke_args = [self.ScriptHash.ToString(), 'crowdsale_register',
                       [PromptUtils.parse_param(p, wallet) for p in register_addresses]]

        tx, fee, results, num_ops, engine_success = TestInvokeContract(wallet, invoke_args, None, True, from_addr)

        return tx, fee, results