(** This is a less precise version of [abuiltin_arg], where memory contents are not taken into account. *)
Definition aaddr_arg (a: VA.t) (ba: builtin_arg reg) : aptr :=
match a with
| VA.Bot => Pbot
| VA.State ae am =>
match ba with
| BA r => aptr_of_aval (AE.get r ae)
| BA_addrstack ofs => Stk ofs
| BA_addrglobal id ofs => Gl id ofs
| _ => Ptop
end
end.

Lemma aaddr_arg_sound_1:
forall bc rs ae m rm am ge sp a b ofs,
ematch bc rs ae ->
romatch bc m rm ->
mmatch bc m am ->
genv_match bc ge ->
bc sp = BCstack ->
eval_builtin_arg ge (fun r : positive => rs # r) (Vptr sp Ptrofs.zero) m a (Vptr b ofs) ->
pmatch bc b ofs (aaddr_arg (VA.State ae am) a).