Hi, I have seen your posts on this topic.
I'm no expert, but I think it is possible that you underestimate the complexity of this mod.
Assuming that your customization work is being performed on a template extension, the following file will allow you to change the order of elements on the GS1 page:
/extensions/templatename/storefront/view/templatename/pages/checkout/guest_step_1.tpl.
In that file, you will find blocks of code that relate to shipping address and billing address. If you copy and paste the shipping block above the billing block, that would be the 1st step in reaching your goal.
But then things get tricky.
You will have to determine where and how the radio button function works in that file, and whether another file is also involved, and if so, how to carry your change through both files.
Then you will have to consider the role of the related controller file:
/storefront/controller/pages/checkout/guest_step_1.php.
The controller file will also have blocks of code that perform GS1 functions, and any change to the tpl file will likely require a corresponding change in the php file.
And vice versa.
Lastly, there is the matter of credit card checkout success.
My AC site uses the Stripe extension. A successful checkout requires that the customer enter a card number, exp date, and code, but not a billing address. Card verification typically includes address and zip, so AC is apparently delivering the previously entered billing address data autonomously.
Your mod will require that you ensure no interruptions to that process.
Typically, ecommerce transactions are structured on the assumption that goods are shipped to billing address of the buyer. The exception occurs when a buyer specifies that the goods be shipped elsewhere. In the credit card processing industry, this exception is always a flag. That's just how it works.
IMO - you may be overestimating the value of switching the structure of GS1, and underestimating the complexity of doing so.