If you are simulating dilute systems with few excitations, simulating states of 128 spins or qubits might be possible. Do not expect to do it with, say, bare Matlab. Instead, you will need to code something in a lower level language that allows you to have greater control over memory that is used. In working with this particular problem I found it advantageous to code it in C++ and embed it in Matlab using the MEX interface.
To illustrate it, below I insert a program I use to simulate a particular problem with spins. It is a subroutine that creates a cell array with M sparse operators. Element (i,j) is a sparse matrix representing a σ- operator on the j-th site of a system with M spins, acting between the spaces with "N" and "N-1" excitations. Using this table or similar ideas you can easily code an XY model acting a space with a fixed number of excitations.
The key, however, is to be able to store such a large number of configurations. For this I use a trick from GCC which is to use 128-bit integers. That's implemented efficiently by the compiler without resorting to special libraries and at most has a 25% performance hit with respect to ordinary integers (64-bit).
The actual program is attached below. You have to compile it and use it more or less as shown below. Note that the same code will teach you how to create sparse matrices, cell arrays and a lot of other stuff.