I believe here is the problem with pointers. You are pushing a pointer to a local (stack) payload instance in the caller's context. You are using address of  the `payload` is defined on the stack of `HandlePayloadAsset` caller. Again refrain from using pointers.