thanks Klod, I'll take a look as only i can. Actually there was a bug in 2.09.02 which is fixed now and pushed in main repo, still your issues fires on nasm snapshot so I presume there is something else involved (probably deftok related).
Some simple code looked semi-same works fine
%macro smac 1
%defstr temp %$
%rep %{1}
%strcat temp ,temp ,'$'
%endrep
%deftok %$index temp
%warning %$index
%endm
%macro s 1
%push __FIRST__
%push __SECOND__
%push __THIRD__
smac 2
%warning %$index
%assign %{%$index}%{%1}first 1
%warning %{%$index}%{%1}first
%pop
smac 1
%assign %{%$index}%{%1}first 2
%warning %{%$index}%{%1}first
%pop
%pop
%endm
s 1