UVM sequence issue

Requirement: To perform read modified write to memory location.

I am performing read from RAL(backdoor), modify the data and write thro sequence->sequencer(front door access from sequence, not from RAL).
My CODE:
typedef byte queue_of_byte[$];
class virtual_seq extends sti_uvm_dev_kit_virtual_sequence;

//ral handle declaration
//ral creation in pre_task phase

 function  queue_of_byte read_modified_write(input int read_location,write_data,rf_page_address,mask_lsb,i2c_block_address);
  queue_of_byte  queue_inst;
 // queue_inst.push_front(50);
 queue_inst.delete(); 
  $display("ENTERING read_modified_write function");
  $display("read_location=%d",read_location);
  $display("write_data=%d",write_data);
  $display("rf_page_address=%d",rf_page_address);
  $display("mask=%d",mask_lsb);
  $display("i2c_block_address=%d",i2c_block_address);
  ral_model.get_ral_data('h4, ral_read_config,3,0);
  ral_model.get_ral_data('h5, ral_read_config_1,3,0);
  ral_model.get_ral_data('h6, ral_read_config_2,3,0);
  ral_model.get_ral_data('h7, ral_read_config_3,3,0);

 queue_inst[0]= ral_read_config [0][7:0];
  queue_inst[1]= ral_read_config [0][15:8];
  queue_inst[2]= ral_read_config [0][23:16];
  queue_inst[3]= ral_read_config [0][31:24];
  queue_inst[4]= ral_read_config_1 [0][7:0];
  queue_inst[5]= ral_read_config_1 [0][15:8];
  queue_inst[6]= ral_read_config_1 [0][23:16];
  queue_inst[7]= ral_read_config_1 [0][31:24];
  queue_inst[8]= ral_read_config_2 [0][7:0];
  queue_inst[9]= ral_read_config_2 [0][15:8];
  queue_inst[10]= ral_read_config_2 [0][23:16];
  queue_inst[11]= ral_read_config_2 [0][31:24];
  queue_inst[12]= ral_read_config_3 [0][7:0];
  queue_inst[13]= ral_read_config_3 [0][15:8];
  queue_inst[14]= ral_read_config_3 [0][23:16];
  queue_inst[15]= ral_read_config_3 [0][31:24];

  queue_inst.push_front(0);
  queue_inst.push_front(i2c_block_address);
   return queue_inst;      

endclass

class b extends virtual_seq;
task body
i2c_queue=read_modified_write(4,
1,
0,
6,
34
);

  foreach(i2c_queue[i])begin
  $display("i2c_queue[%d]=%d",i,i2c_queue[i]);
  end

endclass

I am returning queue from function and data which is returning is not correct. only first data is correct.
Please help on this

In reply to suhasr04:

I want to address a few things.
(1) the typedef for a queue is useless, because a queue is growing and shrinking as you need the content
(2) where is get_ral_data defined?
(3) what are doing these lines:

queue_inst.push_front(0);
queue_inst.push_front(i2c_block_address);

You are overwriting existing content.