def codecopy_(self, global_state: GlobalState) -> List[GlobalState]:
        """

        :param global_state:
        :return:
        """
        memory_offset, code_offset, size = (
            global_state.mstate.stack.pop(),
            global_state.mstate.stack.pop(),
            global_state.mstate.stack.pop(),
        )

        try:
            concrete_memory_offset = helper.get_concrete_int(memory_offset)
        except TypeError:
            log.debug("Unsupported symbolic memory offset in CODECOPY")
            return [global_state]

        try:
            size = helper.get_concrete_int(size)
            global_state.mstate.mem_extend(concrete_memory_offset, size)

        except TypeError:
            # except both attribute error and Exception
            global_state.mstate.mem_extend(concrete_memory_offset, 1)
            global_state.mstate.memory[
                concrete_memory_offset
            ] = global_state.new_bitvec(
                "code({})".format(
                    global_state.environment.active_account.contract_name
                ),
                8,
            )
            return [global_state]

        try:
            concrete_code_offset = helper.get_concrete_int(code_offset)
        except TypeError:
            log.debug("Unsupported symbolic code offset in CODECOPY")
            global_state.mstate.mem_extend(concrete_memory_offset, size)
            for i in range(size):
                global_state.mstate.memory[
                    concrete_memory_offset + i
                ] = global_state.new_bitvec(
                    "code({})".format(
                        global_state.environment.active_account.contract_name
                    ),
                    8,
                )
            return [global_state]

        bytecode = global_state.environment.code.bytecode
        if bytecode[0:2] == "0x":
            bytecode = bytecode[2:]

        if size == 0 and isinstance(
            global_state.current_transaction, ContractCreationTransaction
        ):
            if concrete_code_offset >= len(bytecode) // 2:
                self._handle_symbolic_args(global_state, concrete_memory_offset)
                return [global_state]

        for i in range(size):
            if 2 * (concrete_code_offset + i + 1) <= len(bytecode):
                global_state.mstate.memory[concrete_memory_offset + i] = int(
                    bytecode[
                        2
                        * (concrete_code_offset + i) : 2
                        * (concrete_code_offset + i + 1)
                    ],
                    16,
                )
            else:
                global_state.mstate.memory[
                    concrete_memory_offset + i
                ] = global_state.new_bitvec(
                    "code({})".format(
                        global_state.environment.active_account.contract_name
                    ),
                    8,
                )

        return [global_state]
def codecopy_ ( self , global_state : GlobalState ) -> List [ GlobalState ] : memory_offset , code_offset , size = ( global_state . mstate . stack . pop ( ) , global_state . mstate . stack . pop ( ) , global_state . mstate . stack . pop ( ) , ) try : concrete_memory_offset = helper . get_concrete_int ( memory_offset ) except TypeError : log . debug ( "Unsupported symbolic memory offset in CODECOPY" ) return [ global_state ] try : size = helper . get_concrete_int ( size ) global_state . mstate . mem_extend ( concrete_memory_offset , size ) except TypeError : global_state . mstate . mem_extend ( concrete_memory_offset , 1 ) global_state . mstate . memory [ concrete_memory_offset ] = global_state . new_bitvec ( "code({})" . format ( global_state . environment . active_account . contract_name ) , 8 , ) return [ global_state ] try : concrete_code_offset = helper . get_concrete_int ( code_offset ) except TypeError : log . debug ( "Unsupported symbolic code offset in CODECOPY" ) global_state . mstate . mem_extend ( concrete_memory_offset , size ) for i in range ( size ) : global_state . mstate . memory [ concrete_memory_offset + i ] = global_state . new_bitvec ( "code({})" . format ( global_state . environment . active_account . contract_name ) , 8 , ) return [ global_state ] bytecode = global_state . environment . code . bytecode if bytecode [ 0 : 2 ] == "0x" : bytecode = bytecode [ 2 : ] if size == 0 and isinstance ( global_state . current_transaction , ContractCreationTransaction ) : if concrete_code_offset >= len ( bytecode ) // 2 : self . _handle_symbolic_args ( global_state , concrete_memory_offset ) return [ global_state ] for i in range ( size ) : if 2 * ( concrete_code_offset + i + 1 ) <= len ( bytecode ) : global_state . mstate . memory [ concrete_memory_offset + i ] = int ( bytecode [ 2 * ( concrete_code_offset + i ) : 2 * ( concrete_code_offset + i + 1 ) ] , 16 , ) else : global_state . mstate . memory [ concrete_memory_offset + i ] = global_state . new_bitvec ( "code({})" . format ( global_state . environment . active_account . contract_name ) , 8 , ) return [ global_state ]
:param global_state:
        :return: