This program is compiled with devKitPPC r19 and a patched libogc.
To rebuild the used libogc, get libogc r3821 from svn(https://devkitpro.svn.sourceforge.net/svnroot/devkitpro/trunk/libogc)
and replace s32 __IOS_LaunchNewIOS(int version) with the one from libogc 1.7.1:

s32 __IOS_LaunchNewIOS(int version)
{
	u32 numviews;
	s32 res;
	u64 titleID = 0x100000000LL;
	STACK_ALIGN(tikview,views,4,32);
#ifdef DEBUG_IOS	
	s32 oldversion;
#endif
	s32 newversion;
	
	if(version < 3 || version > 0xFF) {
		return IOS_EBADVERSION;
	}
	
#ifdef DEBUG_IOS
	oldversion = IOS_GetVersion();
	if(oldversion>0) printf("Current IOS Version: IOS%d\n",oldversion);
#endif
	
	titleID |= version;
#ifdef DEBUG_IOS
	printf("Launching IOS TitleID: %016llx\n",titleID);
#endif
	
	res = ES_GetNumTicketViews(titleID, &numviews);
	if(res < 0) {
#ifdef DEBUG_IOS
		printf(" GetNumTicketViews failed: %d\n",res);
#endif
		return res;
	}
	if(numviews > 4) {
		printf(" GetNumTicketViews too many views: %u\n",numviews);
		return IOS_ETOOMANYVIEWS;
	}
	res = ES_GetTicketViews(titleID, views, numviews);
	if(res < 0) {
#ifdef DEBUG_IOS
		printf(" GetTicketViews failed: %d\n",res);
#endif
		return res;
	}
	res = ES_LaunchTitle(titleID, &views[0]);
	if(res < 0) {
#ifdef DEBUG_IOS
		printf(" LaunchTitle failed: %d\n",res);
#endif
		return res;
	}
	__ES_Reset();
	newversion = IOS_GetVersion();
#ifdef DEBUG_IOS
	printf(" IOS Version: IOS%d %d.%d\n",newversion,IOS_GetRevisionMajor(),IOS_GetRevisionMinor());
#endif
	if(newversion != version) {
#ifdef DEBUG_IOS
		printf(" Version mismatch!\n");
#endif
		return IOS_EMISMATCH;
	}
	return version;
}


A compiled version for windows of this libogc is available here:
http://www.mediafire.com/?njjxi1j0mij