Hey, buddy. May we please have you share how you addressed and fixed this issue? I'd like to check it out before rolling back to the previous bios. Please advise at the earliest of your convenience.
I'm so sorry it took forever for me to reply and I hope this works for other and helps! Also, I did this 2 months ago so I apologize for any missing info and if it doesn't work following these instructions, do the deleting/registry renaming before but I believe I did it in order described below. Also, be sure to back-up any data you want to keep or have a means to extract the data afterward in case it corrupts the OS.
What I had to do was open MSConfig, change your boot options to add boot log (I was just going to do this in hopes of seeing in the log where the boot process hung but it ended up doing something else and allowed boot after flashing), then reboot. During that reboot, flash the wanted UEFI/BIOS that you're trying to keep. In my case it was 305 (it kept going back to 306 which blocked FIVR/undervolting). It should flash and reboot into Windows after without freezing and forcing a reboot that reflashes to the later BIOS.
After that, do a file search for any files that have the newer (bad) BIOS and delete them so the system cannot find them and reflash upon reboot (mine was GL504GW-AS.306 or GL504GW.306, so I searched for *.306 to find any corresponding files). Then open RegEdit and similarly search for the unwanted BIOS (again, GL504GW.306 in my case) and rename them to the wanted BIOS (GL504GW.305 in my case). There should be several registry keys associated with that like SystemBiosVersion, FirmwareVersion, etc. so rename them all.
Reboot and hopefully everything sticks. It's worked fine for me since middle/end of June.
Please let me know if this helps as I'd like to know if it was just a one-off in my case or not.