Все нестатические c методы принимают объект, к которому вызывается метод, в качестве первого параметра.
В вашем примере метод принимает аргумент типа D, который имеет широкий тип это занимает 2 регистра. В этом случае v1 является LFoo; экземпляр, в котором вызывается метод, а [v2, v3] - это пара регистров, которая содержит аргумент метода шириной 64 бита.
Когда вы говорите, что «v3 не определен на самом деле», он будет неявно установлен при v2, потому что все широкие значения хранятся с использованием последовательных пар регистров.