After doing as Kartoffel (and 3dgs_snake) have suggested,
you MIGHT also need change your TEMP allocation to
TEMP = SpeedRunShapes[i];
ie: remove the "&" addressof operator. The array already contains pointers(addresses)...
[EDIT] Because if you DO use the '&', you are passing the address
to the pointer, NOT the address of the actual bmap 'struct'.