Some simple ways to check how high it will go (at least how high it will boot):
1. Set everything at auto except for the memory clock - set it at 3600, and memory voltage - set it at 1.45V. Check if it boots, and if yes, then check 3733 or 3800. If you try this, then the motherboard will try to train the memory at the default timings, probably something very relaxed. The whole point of this step is to find how high it will boot and if you can even count on a higher clock. The next step will be to set timings manually.
2. Enable XMP but set a higher memory frequency - 3466 or 3600. If it boots, then check the higher clock. This way, it will tell you if memory runs at XMP settings at a higher clock. The XMP profile isn't really bad. It could be better, but if you set 3600 at these timings then it will be just right.
If you make it work at 3600 CL16-18-18 1.35V, then check stability (AIDA64, Prime95, various memtest versions, or even extended 7-Zip benchmark with a library file close to the max RAM capacity). If it won't work, then set a 1.40V or 1.45V memory voltage and test again. If it won't work, then check CL16-19-19 or CL16-20-20.
This memory suggests it will run at 3600, 3733, or 3800 CL16-20-20, 17-20-20, or 18-20-20. It would be much easier if we knew the memory IC. The optimal would be 3600 CL16-x-x. I don't think it's worth the time to play with sub-timings, as it will barely help.
I don't think you can improve your results a lot on your motherboard as it's a lower series, and Gigabyte is barely ever tuning BIOS for lower series.