pub(crate) fn bootloader_memory(&self) -> BootloaderMemory {
        let mut initial_memory = self.initial_memory.clone();
        let mut offset = 0;
        let mut compressed_bytecodes_offset = 0;
        let mut tx_index = 0;
        for l2_block in &self.l2_blocks {
            for (num, tx) in l2_block.txs.iter().enumerate() {
                let compressed_bytecodes_size = apply_tx_to_memory(
                    &mut initial_memory,
                    tx,
                    l2_block,
                    tx_index,
                    offset,
                    compressed_bytecodes_offset,
                    self.execution_mode,
                    num == 0,
                );
                offset += tx.encoded_len();
                compressed_bytecodes_offset += compressed_bytecodes_size;
                tx_index += 1;
            }
            if l2_block.txs.is_empty() {
                apply_l2_block(&mut initial_memory, l2_block, tx_index)
            }
        }

        let pubdata_information = self
            .pubdata_information
            .clone()
            .into_inner()
            .expect("Empty pubdata information");

        apply_pubdata_to_memory(&mut initial_memory, pubdata_information);
        initial_memory
    }
Apply all bootloader transaction to the initial memory
core/lib/multivm/src/versions/vm_boojum_integration/bootloader_state/state.rs