extern int f1(); extern int f2(void*); extern void* f3(int); int xmsih; typedef unsigned short XWCHAR; inline unsigned int xstrlenW( const XWCHAR *str ) { const XWCHAR *s = str; while (*s) s++; return s - str; } static int msi_dialog_register_class( void ) { int cls; if( !f2( &cls ) ) return 0; if( !f2( &cls ) ) return 0; xmsih = f1(); if( !xmsih ) return 0; return 1; } void *xmsi_dialog_create(const XWCHAR* szDialogName) { msi_dialog_register_class(); return f3(xstrlenW(szDialogName)); }