With this change, Warcraft3 installs on a no-windows wine (without a
windows msvcrt.dll at last).
Hopefully this incorporates all the suggestions people gave me.
Changelog
Emulate the _thiscall calling convention used for C++ calls where the
'this' value is held in ECX.
Jason
? dlls/msvcrt/org
? dlls/msvcrtd/org
Index: dlls/msvcrt/cpp.c
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/cpp.c,v
retrieving revision 1.12
diff -u -r1.12 cpp.c
--- dlls/msvcrt/cpp.c 19 Jul 2002 03:24:50 -0000 1.12
+++ dlls/msvcrt/cpp.c 26 May 2003 12:44:44 -0000
@@ -106,6 +106,12 @@
_this->do_free = 0; /* FIXME */
}
+void __reg_MSVCRT_exception_ctor(const char ** name, CONTEXT86 *context)
+{
+ MSVCRT_exception_ctor((exception *)context->Ecx, name);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??0exception@@QAE@ABV0@@Z (MSVCRT.@)
*/
@@ -117,6 +123,12 @@
TRACE("name = %s\n",_this->name);
}
+void __reg_MSVCRT_exception_copy_ctor(const exception * rhs, CONTEXT86 *context)
+{
+ MSVCRT_exception_copy_ctor((exception *)context->Ecx, rhs);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??0exception@@QAE@XZ (MSVCRT.@)
*/
@@ -128,6 +140,12 @@
_this->do_free = 0; /* FIXME */
}
+void __reg_MSVCRT_exception_default_ctor(CONTEXT86 *context)
+{
+ MSVCRT_exception_default_ctor((exception *)context->Ecx);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??1exception@@UAE@XZ (MSVCRT.@)
*/
@@ -136,6 +154,12 @@
TRACE("(%p)\n",_this);
}
+void __reg_MSVCRT_exception_dtor(CONTEXT86 *context)
+{
+ MSVCRT_exception_dtor((exception *)context->Ecx);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??4exception@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
@@ -147,6 +171,11 @@
return _this;
}
+void __reg_MSVCRT_exception_opequals(const exception * rhs, CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_exception_opequals((exception *)context->Ecx, rhs);
+}
+
/******************************************************************
* ??_Eexception@@UAEPAXI@Z (MSVCRT.@)
*/
@@ -157,6 +186,12 @@
return NULL;
}
+void __reg_MSVCRT_exception__unknown_E(unsigned int arg1, CONTEXT86 *context)
+{
+ MSVCRT_exception__unknown_E((exception *)context->Ecx, arg1);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??_Gexception@@UAEPAXI@Z (MSVCRT.@)
*/
@@ -167,6 +202,12 @@
return NULL;
}
+void __reg_MSVCRT_exception__unknown_G(unsigned int arg1, CONTEXT86 *context)
+{
+ MSVCRT_exception__unknown_E((exception *)context->Ecx, arg1);
+ context->Eax = 0;
+}
+
/******************************************************************
* ?what@exception@@UBEPBDXZ (MSVCRT.@)
*/
@@ -176,6 +217,10 @@
return _this->name;
}
+void __reg_MSVCRT_what_exception(CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_what_exception((exception *)context->Ecx);
+}
/******************************************************************
* ?set_terminate@@YAP6AXXZP6AXXZ@Z (MSVCRT.@)
@@ -243,6 +288,12 @@
MSVCRT_exception_copy_ctor(&_this->base,&rhs->base);
}
+void __reg_MSVCRT_bad_typeid_copy_ctor(const bad_typeid * rhs, CONTEXT86 *context)
+{
+ MSVCRT_bad_typeid_copy_ctor((bad_typeid *)context->Ecx, rhs);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??0bad_typeid@@QAE@PBD@Z (MSVCRT.@)
*/
@@ -253,6 +304,12 @@
_this->base.vtable = bad_typeid_vtable;
}
+void __reg_MSVCRT_bad_typeid_ctor(const char * name, CONTEXT86 *context)
+{
+ MSVCRT_bad_typeid_ctor((bad_typeid *)context->Ecx, name);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??1bad_typeid@@UAE@XZ (MSVCRT.@)
*/
@@ -262,6 +319,12 @@
MSVCRT_exception_dtor(&_this->base);
}
+void __reg_MSVCRT_bad_typeid_dtor(CONTEXT86 *context)
+{
+ MSVCRT_bad_typeid_dtor((bad_typeid *)context->Ecx);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??4bad_typeid@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
@@ -272,6 +335,11 @@
return _this;
}
+void __reg_MSVCRT_bad_typeid_opequals(const bad_typeid * rhs, CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_bad_typeid_opequals((bad_typeid *)context->Ecx, rhs);
+}
+
/******************************************************************
* ??0__non_rtti_object@@QAE@ABV0@@Z (MSVCRT.@)
*/
@@ -282,6 +350,12 @@
MSVCRT_bad_typeid_copy_ctor(&_this->base,&rhs->base);
}
+void __reg_MSVCRT___non_rtti_object_copy_ctor(const __non_rtti_object * rhs, CONTEXT86 *context)
+{
+ MSVCRT___non_rtti_object_copy_ctor((__non_rtti_object *)context->Ecx, rhs);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??0__non_rtti_object@@QAE@PBD@Z (MSVCRT.@)
*/
@@ -293,6 +367,12 @@
_this->base.base.vtable = __non_rtti_object_vtable;
}
+void __reg_MSVCRT___non_rtti_object_ctor(const char * name, CONTEXT86 *context)
+{
+ MSVCRT___non_rtti_object_ctor((__non_rtti_object *)context->Ecx, name);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??1__non_rtti_object@@UAE@XZ (MSVCRT.@)
*/
@@ -302,6 +382,12 @@
MSVCRT_bad_typeid_dtor(&_this->base);
}
+void __reg_MSVCRT___non_rtti_object_dtor(CONTEXT86 *context)
+{
+ MSVCRT___non_rtti_object_dtor((__non_rtti_object *)context->Ecx);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??4__non_rtti_object@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
@@ -314,6 +400,11 @@
return _this;
}
+void __reg_MSVCRT___non_rtti_object_opequals(const __non_rtti_object * rhs, CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT___non_rtti_object_opequals((__non_rtti_object *)context->Ecx, rhs);
+}
+
/******************************************************************
* ??_E__non_rtti_object@@UAEPAXI@Z (MSVCRT.@)
*/
@@ -324,6 +415,12 @@
return NULL;
}
+void __reg_MSVCRT___non_rtti_object__unknown_E(unsigned int arg1, CONTEXT86 *context)
+{
+ MSVCRT___non_rtti_object__unknown_E((__non_rtti_object *)context->Ecx, arg1);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??_G__non_rtti_object@@UAEPAXI@Z (MSVCRT.@)
*/
@@ -334,6 +431,12 @@
return NULL;
}
+void __reg_MSVCRT___non_rtti_object__unknown_G(unsigned int arg1, CONTEXT86 *context)
+{
+ MSVCRT___non_rtti_object__unknown_G((__non_rtti_object *)context->Ecx, arg1);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??0bad_cast@@QAE@ABQBD@Z (MSVCRT.@)
*/
@@ -344,6 +447,12 @@
_this->base.vtable = bad_cast_vtable;
}
+void __reg_MSVCRT_bad_cast_ctor(const char ** name, CONTEXT86 *context)
+{
+ MSVCRT_bad_cast_ctor((bad_cast *)context->Ecx, name);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??0bad_cast@@QAE@ABV0@@Z (MSVCRT.@)
*/
@@ -353,6 +462,12 @@
MSVCRT_exception_copy_ctor(&_this->base,&rhs->base);
}
+void __reg_MSVCRT_bad_cast_copy_ctor(const bad_cast * rhs, CONTEXT86 *context)
+{
+ MSVCRT_bad_cast_copy_ctor((bad_cast *)context->Ecx, rhs);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??1bad_cast@@UAE@XZ (MSVCRT.@)
*/
@@ -362,6 +477,12 @@
MSVCRT_exception_dtor(&_this->base);
}
+void __reg_MSVCRT_bad_cast_dtor(CONTEXT86 *context)
+{
+ MSVCRT_bad_cast_dtor((bad_cast *)context->Ecx);
+ context->Eax = 0;
+}
+
/******************************************************************
* ??4bad_cast@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
@@ -372,6 +493,11 @@
return _this;
}
+void __reg_MSVCRT_bad_cast_opequals(const bad_cast * rhs, CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_bad_cast_opequals((bad_cast *)context->Ecx, rhs);
+}
+
/******************************************************************
* ??8type_info@@QBEHABV0@@Z (MSVCRT.@)
*/
@@ -381,6 +507,11 @@
return _this->name == rhs->name;
}
+void __stdcall __reg_MSVCRT_type_info_opequals_equals(const type_info * rhs, CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_type_info_opequals_equals((type_info *)context->Ecx, rhs);
+}
+
/******************************************************************
* ??9type_info@@QBEHABV0@@Z (MSVCRT.@)
*/
@@ -390,6 +521,11 @@
return _this->name != rhs->name;
}
+void __stdcall __reg_MSVCRT_type_info_opnot_equals(const type_info * rhs, CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_type_info_opnot_equals((type_info *)context->Ecx, rhs);
+}
+
/******************************************************************
* ??1type_info@@UAE@XZ (MSVCRT.@)
*/
@@ -400,6 +536,12 @@
MSVCRT_free(_this->data);
}
+void __reg_MSVCRT_type_info_dtor(CONTEXT86 *context)
+{
+ MSVCRT_type_info_dtor((type_info *)context->Ecx);
+ context->Eax = 0;
+}
+
/******************************************************************
* ?name@type_info@@QBEPBDXZ (MSVCRT.@)
*/
@@ -409,6 +551,11 @@
return _this->name;
}
+void __stdcall __reg_MSVCRT_type_info_name(CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_type_info_name((type_info *)context->Ecx);
+}
+
/******************************************************************
* ?raw_name@type_info@@QBEPBDXZ (MSVCRT.@)
*/
@@ -418,6 +565,10 @@
return _this->name;
}
+void __stdcall __reg_MSVCRT_type_info_raw_name(CONTEXT86 *context)
+{
+ context->Eax = (DWORD) MSVCRT_type_info_raw_name((type_info *)context->Ecx);
+}
/******************************************************************
* __RTtypeid (MSVCRT.@)
Index: dlls/msvcrt/msvcrt.spec
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/msvcrt.spec,v
retrieving revision 1.72
diff -u -r1.72 msvcrt.spec
--- dlls/msvcrt/msvcrt.spec 12 May 2003 03:31:16 -0000 1.72
+++ dlls/msvcrt/msvcrt.spec 26 May 2003 12:44:44 -0000
@@ -1,56 +1,56 @@
# msvcrt.dll - MS VC++ Run Time Library
@ cdecl $I10_OUTPUT() MSVCRT_I10_OUTPUT
-@ cdecl ??0__non_rtti_object@@QAE@ABV0@@Z(ptr ptr) MSVCRT___non_rtti_object_copy_ctor
-@ cdecl ??0__non_rtti_object@@QAE@PBD@Z(ptr ptr) MSVCRT___non_rtti_object_ctor
-@ cdecl ??0bad_cast@@QAE@ABQBD@Z(ptr ptr) MSVCRT_bad_cast_ctor
-@ cdecl ??0bad_cast@@QAE@ABV0@@Z(ptr ptr) MSVCRT_bad_cast_copy_ctor
-@ cdecl ??0bad_typeid@@QAE@ABV0@@Z(ptr ptr) MSVCRT_bad_typeid_copy_ctor
-@ cdecl ??0bad_typeid@@QAE@PBD@Z(ptr ptr) MSVCRT_bad_typeid_ctor
-@ cdecl ??0exception@@QAE@ABQBD@Z(ptr ptr) MSVCRT_exception_ctor
-@ cdecl ??0exception@@QAE@ABV0@@Z(ptr ptr) MSVCRT_exception_copy_ctor
-@ cdecl ??0exception@@QAE@XZ(ptr) MSVCRT_exception_default_ctor
-@ cdecl ??1__non_rtti_object@@UAE@XZ(ptr) MSVCRT___non_rtti_object_dtor
-@ cdecl ??1bad_cast@@UAE@XZ(ptr) MSVCRT_bad_cast_dtor
-@ cdecl ??1bad_typeid@@UAE@XZ(ptr) MSVCRT_bad_typeid_dtor
-@ cdecl ??1exception@@UAE@XZ(ptr) MSVCRT_exception_dtor
-@ cdecl ??1type_info@@UAE@XZ(ptr) MSVCRT_type_info_dtor
+@ cdecl -register ??0__non_rtti_object@@QAE@ABV0@@Z(ptr) __reg_MSVCRT___non_rtti_object_copy_ctor
+@ cdecl -register ??0__non_rtti_object@@QAE@PBD@Z(ptr) __reg_MSVCRT___non_rtti_object_ctor
+@ cdecl -register ??0bad_cast@@QAE@ABQBD@Z(ptr) __reg_MSVCRT_bad_cast_ctor
+@ cdecl -register ??0bad_cast@@QAE@ABV0@@Z(ptr) __reg_MSVCRT_bad_cast_copy_ctor
+@ cdecl -register ??0bad_typeid@@QAE@ABV0@@Z(ptr) __reg_MSVCRT_bad_typeid_copy_ctor
+@ cdecl -register ??0bad_typeid@@QAE@PBD@Z(ptr) __reg_MSVCRT_bad_typeid_ctor
+@ cdecl -register ??0exception@@QAE@ABQBD@Z(ptr) __reg_MSVCRT_exception_ctor
+@ cdecl -register ??0exception@@QAE@ABV0@@Z(ptr) __reg_MSVCRT_exception_copy_ctor
+@ cdecl -register ??0exception@@QAE@XZ() __reg_MSVCRT_exception_default_ctor
+@ cdecl -register ??1__non_rtti_object@@UAE@XZ() __reg_MSVCRT___non_rtti_object_dtor
+@ cdecl -register ??1bad_cast@@UAE@XZ() __reg_MSVCRT_bad_cast_dtor
+@ cdecl -register ??1bad_typeid@@UAE@XZ() __reg_MSVCRT_bad_typeid_dtor
+@ cdecl -register ??1exception@@UAE@XZ() __reg_MSVCRT_exception_dtor
+@ cdecl -register ??1type_info@@UAE@XZ() __reg_MSVCRT_type_info_dtor
@ cdecl ??2@YAPAXI@Z(long) MSVCRT_operator_new
@ cdecl ??_U@YAPAXI@Z(long) MSVCRT_operator_new
@ cdecl ??3@YAXPAX@Z(ptr) MSVCRT_operator_delete
@ cdecl ??_V@YAXPAX@Z(ptr) MSVCRT_operator_delete
-@ cdecl ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr ptr) MSVCRT___non_rtti_object_opequals
-@ cdecl ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr ptr) MSVCRT_bad_cast_opequals
-@ cdecl ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr ptr)MSVCRT_bad_typeid_opequals
-@ cdecl ??4exception@@QAEAAV0@ABV0@@Z(ptr ptr) MSVCRT_exception_opequals
-@ stdcall ??8type_info@@QBEHABV0@@Z(ptr ptr) MSVCRT_type_info_opequals_equals
-@ stdcall ??9type_info@@QBEHABV0@@Z(ptr ptr) MSVCRT_type_info_opnot_equals
+@ cdecl -register ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr) __reg_MSVCRT___non_rtti_object_opequals
+@ cdecl -register ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr) __reg_MSVCRT_bad_cast_opequals
+@ cdecl -register ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr) __reg_MSVCRT_bad_typeid_opequals
+@ cdecl -register ??4exception@@QAEAAV0@ABV0@@Z(ptr) __reg_MSVCRT_exception_opequals
+@ stdcall -register ??8type_info@@QBEHABV0@@Z(ptr) __reg_MSVCRT_type_info_opequals_equals
+@ stdcall -register ??9type_info@@QBEHABV0@@Z(ptr) __reg_MSVCRT_type_info_opnot_equals
@ stub ??_7__non_rtti_object@@6B@
@ stub ??_7bad_cast@@6B@
@ stub ??_7bad_typeid@@6B@
@ stub ??_7exception@@6B@
-@ cdecl ??_E__non_rtti_object@@UAEPAXI@Z(ptr long) MSVCRT___non_rtti_object__unknown_E
+@ cdecl -register ??_E__non_rtti_object@@UAEPAXI@Z(long) __reg_MSVCRT___non_rtti_object__unknown_E
@ stub ??_Ebad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Ebad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Eexception@@UAEPAXI@Z(ptr long) MSVCRT_exception__unknown_E
-@ cdecl ??_G__non_rtti_object@@UAEPAXI@Z(ptr long) MSVCRT___non_rtti_object__unknown_G
+@ cdecl -register ??_Eexception@@UAEPAXI@Z(long) __reg_MSVCRT_exception__unknown_E
+@ cdecl -register ??_G__non_rtti_object@@UAEPAXI@Z(long) __reg_MSVCRT___non_rtti_object__unknown_G
@ stub ??_Gbad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Gbad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Gexception@@UAEPAXI@Z(ptr long) MSVCRT_exception__unknown_G
+@ cdecl -register ??_Gexception@@UAEPAXI@Z(long) __reg_MSVCRT_exception__unknown_G
@ cdecl ?_query_new_handler@@YAP6AHI@ZXZ() MSVCRT__query_new_handler
@ cdecl ?_query_new_mode@@YAHXZ() MSVCRT__query_new_mode
@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) MSVCRT__set_new_handler
@ cdecl ?_set_new_mode@@YAHH@Z(long) MSVCRT__set_new_mode
@ cdecl ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z(ptr) MSVCRT__set_se_translator
@ stub ?before@type_info@@QBEHABV1@@Z #(ptr ptr) stdcall
-@ stdcall ?name@type_info@@QBEPBDXZ(ptr) MSVCRT_type_info_name
-@ stdcall ?raw_name@type_info@@QBEPBDXZ(ptr) MSVCRT_type_info_raw_name
+@ stdcall -register ?name@type_info@@QBEPBDXZ() __reg_MSVCRT_type_info_name
+@ stdcall -register ?raw_name@type_info@@QBEPBDXZ() __reg_MSVCRT_type_info_raw_name
@ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT__set_new_handler
@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_terminate
@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_unexpected
@ cdecl ?terminate@@YAXXZ() MSVCRT_terminate
@ cdecl ?unexpected@@YAXXZ() MSVCRT_unexpected
-@ cdecl ?what@exception@@UBEPBDXZ(ptr) MSVCRT_what_exception
+@ cdecl -register ?what@exception@@UBEPBDXZ() __reg_MSVCRT_what_exception
@ cdecl _CIacos()
@ cdecl _CIasin()
@ cdecl _CIatan()
Index: dlls/msvcrtd/msvcrtd.spec
===================================================================
RCS file: /home/wine/wine/dlls/msvcrtd/msvcrtd.spec,v
retrieving revision 1.2
diff -u -r1.2 msvcrtd.spec
--- dlls/msvcrtd/msvcrtd.spec 7 Apr 2003 23:30:20 -0000 1.2
+++ dlls/msvcrtd/msvcrtd.spec 26 May 2003 12:44:45 -0000
@@ -1,55 +1,55 @@
# msvcrtd.dll - MS VC++ Run Time Library
@ cdecl $I10_OUTPUT() msvcrt.$I10_OUTPUT
-@ cdecl ??0__non_rtti_object@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0__non_rtti_object@@QAE@ABV0@@Z
-@ cdecl ??0__non_rtti_object@@QAE@PBD@Z(ptr ptr) msvcrt.??0__non_rtti_object@@QAE@PBD@Z
-@ cdecl ??0bad_cast@@QAE@ABQBD@Z(ptr ptr) msvcrt.??0bad_cast@@QAE@ABQBD@Z
-@ cdecl ??0bad_cast@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0bad_cast@@QAE@ABV0@@Z
-@ cdecl ??0bad_typeid@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0bad_typeid@@QAE@ABV0@@Z
-@ cdecl ??0bad_typeid@@QAE@PBD@Z(ptr ptr) msvcrt.??0bad_typeid@@QAE@PBD@Z
-@ cdecl ??0exception@@QAE@ABQBD@Z(ptr ptr) msvcrt.??0exception@@QAE@ABQBD@Z
-@ cdecl ??0exception@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0exception@@QAE@ABV0@@Z
-@ cdecl ??0exception@@QAE@XZ(ptr) msvcrt.??0exception@@QAE@XZ
-@ cdecl ??1__non_rtti_object@@UAE@XZ(ptr) msvcrt.??1__non_rtti_object@@UAE@XZ
-@ cdecl ??1bad_cast@@UAE@XZ(ptr) msvcrt.??1bad_cast@@UAE@XZ
-@ cdecl ??1bad_typeid@@UAE@XZ(ptr) msvcrt.??1bad_typeid@@UAE@XZ
-@ cdecl ??1exception@@UAE@XZ(ptr) msvcrt.??1exception@@UAE@XZ
-@ cdecl ??1type_info@@UAE@XZ(ptr) msvcrt.??1type_info@@UAE@XZ
+@ cdecl -register ??0__non_rtti_object@@QAE@ABV0@@Z(ptr) msvcrt.??0__non_rtti_object@@QAE@ABV0@@Z
+@ cdecl -register ??0__non_rtti_object@@QAE@PBD@Z(ptr) msvcrt.??0__non_rtti_object@@QAE@PBD@Z
+@ cdecl -register ??0bad_cast@@QAE@ABQBD@Z(ptr) msvcrt.??0bad_cast@@QAE@ABQBD@Z
+@ cdecl -register ??0bad_cast@@QAE@ABV0@@Z(ptr) msvcrt.??0bad_cast@@QAE@ABV0@@Z
+@ cdecl -register ??0bad_typeid@@QAE@ABV0@@Z(ptr) msvcrt.??0bad_typeid@@QAE@ABV0@@Z
+@ cdecl -register ??0bad_typeid@@QAE@PBD@Z(ptr) msvcrt.??0bad_typeid@@QAE@PBD@Z
+@ cdecl -register ??0exception@@QAE@ABQBD@Z(ptr) msvcrt.??0exception@@QAE@ABQBD@Z
+@ cdecl -register ??0exception@@QAE@ABV0@@Z(ptr) msvcrt.??0exception@@QAE@ABV0@@Z
+@ cdecl -register ??0exception@@QAE@XZ() msvcrt.??0exception@@QAE@XZ
+@ cdecl -register ??1__non_rtti_object@@UAE@XZ() msvcrt.??1__non_rtti_object@@UAE@XZ
+@ cdecl -register ??1bad_cast@@UAE@XZ() msvcrt.??1bad_cast@@UAE@XZ
+@ cdecl -register ??1bad_typeid@@UAE@XZ() msvcrt.??1bad_typeid@@UAE@XZ
+@ cdecl -register ??1exception@@UAE@XZ() msvcrt.??1exception@@UAE@XZ
+@ cdecl -register ??1type_info@@UAE@XZ() msvcrt.??1type_info@@UAE@XZ
@ cdecl ??2@YAPAXI@Z(long) msvcrt.??2@YAPAXI@Z
@ cdecl ??2@YAPAXIHPBDH@Z(long) msvcrt.??2@YAPAXIHPBDH@Z
@ cdecl ??3@YAXPAX@Z(ptr) msvcrt.??3@YAXPAX@Z
-@ cdecl ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4__non_rtti_object@@QAEAAV0@ABV0@@Z
-@ cdecl ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4bad_cast@@QAEAAV0@ABV0@@Z
-@ cdecl ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4bad_typeid@@QAEAAV0@ABV0@@Z
-@ cdecl ??4exception@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4exception@@QAEAAV0@ABV0@@Z
-@ stdcall ??8type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??8type_info@@QBEHABV0@@Z
-@ stdcall ??9type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??9type_info@@QBEHABV0@@Z
+@ cdecl -register ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4__non_rtti_object@@QAEAAV0@ABV0@@Z
+@ cdecl -register ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4bad_cast@@QAEAAV0@ABV0@@Z
+@ cdecl -register ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4bad_typeid@@QAEAAV0@ABV0@@Z
+@ cdecl -register ??4exception@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4exception@@QAEAAV0@ABV0@@Z
+@ stdcall -register ??8type_info@@QBEHABV0@@Z(ptr) msvcrt.??8type_info@@QBEHABV0@@Z
+@ stdcall -register ??9type_info@@QBEHABV0@@Z(ptr) msvcrt.??9type_info@@QBEHABV0@@Z
@ stub ??_7__non_rtti_object@@6B@
@ stub ??_7bad_cast@@6B@
@ stub ??_7bad_typeid@@6B@
@ stub ??_7exception@@6B@
-@ cdecl ??_E__non_rtti_object@@UAEPAXI@Z(ptr long) msvcrt.??_E__non_rtti_object@@UAEPAXI@Z
+@ cdecl -register ??_E__non_rtti_object@@UAEPAXI@Z(long) msvcrt.??_E__non_rtti_object@@UAEPAXI@Z
@ stub ??_Ebad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Ebad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Eexception@@UAEPAXI@Z(ptr long) msvcrt.??_Eexception@@UAEPAXI@Z
-@ cdecl ??_G__non_rtti_object@@UAEPAXI@Z(ptr long) msvcrt.??_G__non_rtti_object@@UAEPAXI@Z
+@ cdecl -register ??_Eexception@@UAEPAXI@Z(long) msvcrt.??_Eexception@@UAEPAXI@Z
+@ cdecl -register ??_G__non_rtti_object@@UAEPAXI@Z(long) msvcrt.??_G__non_rtti_object@@UAEPAXI@Z
@ stub ??_Gbad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Gbad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Gexception@@UAEPAXI@Z(ptr long) msvcrt.??_Gexception@@UAEPAXI@Z
+@ cdecl -register ??_Gexception@@UAEPAXI@Z(long) msvcrt.??_Gexception@@UAEPAXI@Z
@ cdecl ?_query_new_handler@@YAP6AHI@ZXZ() msvcrt.?_query_new_handler@@YAP6AHI@ZXZ
@ cdecl ?_query_new_mode@@YAHXZ() msvcrt.?_query_new_mode@@YAHXZ
@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) msvcrt.?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z
@ cdecl ?_set_new_mode@@YAHH@Z(long) msvcrt.?_set_new_mode@@YAHH@Z
@ cdecl ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z(ptr) msvcrt.?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
@ stub ?before@type_info@@QBEHABV1@@Z #(ptr ptr) stdcall
-@ stdcall ?name@type_info@@QBEPBDXZ(ptr) msvcrt.?name@type_info@@QBEPBDXZ
-@ stdcall ?raw_name@type_info@@QBEPBDXZ(ptr) msvcrt.?raw_name@type_info@@QBEPBDXZ
+@ stdcall -register ?name@type_info@@QBEPBDXZ() msvcrt.?name@type_info@@QBEPBDXZ
+@ stdcall -register ?raw_name@type_info@@QBEPBDXZ() msvcrt.?raw_name@type_info@@QBEPBDXZ
@ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_new_handler@@YAP6AXXZP6AXXZ@Z
@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_terminate@@YAP6AXXZP6AXXZ@Z
@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_unexpected@@YAP6AXXZP6AXXZ@Z
@ cdecl ?terminate@@YAXXZ() msvcrt.?terminate@@YAXXZ
@ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
-@ cdecl ?what@exception@@UBEPBDXZ(ptr) msvcrt.?what@exception@@UBEPBDXZ
+@ cdecl -register ?what@exception@@UBEPBDXZ() msvcrt.?what@exception@@UBEPBDXZ
@ cdecl _CIacos() msvcrt._CIacos
@ cdecl _CIasin() msvcrt._CIasin
@ cdecl _CIatan() msvcrt._CIatan