A computer-implemented method for disassembling a data structure, the method comprising: receiving, by at least one processor, a multi-dimensional array comprising a plurality of data units, wherein each data unit of the plurality of data units is associated with a unique set of coordinates, and wherein an order of the data units in the array corresponds to the data structure; applying a first function to the array, by the at least one processor, wherein the first function is selected from an ordered set of functions, wherein applying the first function comprises: applying a first range value from an ordered set of range values for the first function to generate a first set of coordinates comprising a coordinate corresponding to a first dimension of the multi-dimensional array and a coordinate corresponding to a second dimension of the array; moving a first data unit in the array at a location described by the first set of coordinates to a disassembled data container (84, 86); applying a second range value from the ordered set of range values for the first function to generate a second set of coordinates comprising a coordinate corresponding to the first dimension of the array and a coordinate corresponding to the second dimension of the array, wherein the second range value is positioned immediately after the first range value according to the ordered set of range values; and moving a second data unit in the array at a location described by the second set of coordinates to the disassembled data container (84, 86) in a position immediately after a position of the first data unit; applying a second function to the array, by the at least one processor, wherein the second function is selected from the ordered set of functions, and wherein the second function is positioned immediately after the first function according to the ordered set of functions; and storing, by the processor, the array and the disassembled data container. receiving, by at least one processor, a multi-dimensional array comprising a plurality of data units, wherein each data unit of the plurality of data units is associated with a unique set of coordinates, and wherein an order of the data units in the array corresponds to the data structure; applying a first function to the array, by the at least one processor, wherein the first function is selected from an ordered set of functions, wherein applying the first function comprises: applying a first range value from an ordered set of range values for the first function to generate a first set of coordinates comprising a coordinate corresponding to a first dimension of the multi-dimensional array and a coordinate corresponding to a second dimension of the array; moving a first data unit in the array at a location described by the first set of coordinates to a disassembled data container (84, 86); applying a second range value from the ordered set of range values for the first function to generate a second set of coordinates comprising a coordinate corresponding to the first dimension of the array and a coordinate corresponding to the second dimension of the array, wherein the second range value is positioned immediately after the first range value according to the ordered set of range values; and moving a second data unit in the array at a location described by the second set of coordinates to the disassembled data container (84, 86) in a position immediately after a position of the first data unit; applying a first range value from an ordered set of range values for the first function to generate a first set of coordinates comprising a coordinate corresponding to a first dimension of the multi-dimensional array and a coordinate corresponding to a second dimension of the array; moving a first data unit in the array at a location described by the first set of coordinates to a disassembled data container (84, 86); applying a second range value from the ordered set of range values for the first function to generate a second set of coordinates comprising a coordinate corresponding to the first dimension of the array and a coordinate corresponding to the second dimension of the array, wherein the second range value is positioned immediately after the first range value according to the ordered set of range values; and moving a second data unit in the array at a location described by the second set of coordinates to the disassembled data container (84, 86) in a position immediately after a position of the first data unit; applying a second function to the array, by the at least one processor, wherein the second function is selected from the ordered set of functions, and wherein the second function is positioned immediately after the first function according to the ordered set of functions; and storing, by the processor, the array and the disassembled data container.