I guess I'm an expert at answering my own question: the ROM bootloader finds the entry point for my code at in the reset vector at address 0. I was confused because I saw this in memory:
00000000: 00300020
00000004: 49060000
and forgot that this is stored as big-endian, so the correct interpretation is
sp = 0x20003000
pc = 0x00000649
... and sure enough, it turns out that 0x0649 is the Reset_Handler for my code.