[1/3] msvcirt: Add stub of class ios (try 2)

Iván Matellanes matellanesivan at gmail.com
Sat Jul 4 09:24:37 CDT 2015


Try 2: fix test failures on 64-bit VMs
---
 dlls/msvcirt/msvcirt.c      | 472 ++++++++++++++++++++++++++++++++++++++++++--
 dlls/msvcirt/msvcirt.h      |  25 +++
 dlls/msvcirt/msvcirt.spec   | 184 ++++++++---------
 dlls/msvcrt20/msvcrt20.spec | 180 ++++++++---------
 dlls/msvcrt40/msvcrt40.spec | 180 ++++++++---------
 5 files changed, 748 insertions(+), 293 deletions(-)

diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index 960cd90..36d0215 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -54,13 +54,27 @@ streambuf* __thiscall streambuf_setbuf(streambuf*, char*, int);
 void __thiscall streambuf_setg(streambuf*, char*, char*, char*);
 void __thiscall streambuf_setp(streambuf*, char*, char*);
 
+/* class ios */
+struct _ostream;
 typedef struct {
-    LPVOID VTable;
-} class_ios;
+    const vtable_ptr *vtable;
+    streambuf *sb;
+    ios_io_state state;
+    int special[4];
+    int delbuf;
+    struct _ostream *tie;
+    ios_flags flags;
+    int precision;
+    char fill;
+    int width;
+    int do_lock;
+    CRITICAL_SECTION lock;
+} ios;
 
-typedef struct {
-    LPVOID VTable;
-} class_ostream;
+/* class ostream */
+typedef struct _ostream {
+    const vtable_ptr *vtable;
+} ostream;
 
 typedef struct {
     LPVOID VTable;
@@ -68,6 +82,8 @@ typedef struct {
 
 /* ??_7streambuf@@6B@ */
 extern const vtable_ptr MSVCP_streambuf_vtable;
+/* ??_7ios@@6B@ */
+extern const vtable_ptr MSVCP_ios_vtable;
 
 #ifndef __GNUC__
 void __asm_dummy_vtables(void) {
@@ -84,11 +100,14 @@ void __asm_dummy_vtables(void) {
             VTABLE_ADD_FUNC(streambuf_underflow)
             VTABLE_ADD_FUNC(streambuf_pbackfail)
             VTABLE_ADD_FUNC(streambuf_doallocate));
+    __ASM_VTABLE(ios,
+            VTABLE_ADD_FUNC(ios_vector_dtor));
 #ifndef __GNUC__
 }
 #endif
 
 DEFINE_RTTI_DATA0(streambuf, 0, ".?AVstreambuf@@")
+DEFINE_RTTI_DATA0(ios, 0, ".?AVios@@")
 
 /* ??0streambuf@@IAE at PADH@Z */
 /* ??0streambuf@@IEAA at PEADH@Z */
@@ -683,22 +702,432 @@ void __thiscall streambuf_dbp(streambuf *this)
     }
 }
 
-/******************************************************************
- *		 ??1ios@@UAE at XZ (MSVCRTI.@)
- *        class ios & __thiscall ios::-ios<<(void)
- */
-DEFINE_THISCALL_WRAPPER(MSVCIRT_ios_sl_void,4)
-void * __thiscall MSVCIRT_ios_sl_void(class_ios * _this)
+/* ??0ios@@IAE at ABV0@@Z */
+/* ??0ios@@IEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(ios_copy_ctor, 8)
+ios* __thiscall ios_copy_ctor(ios *this, const ios *copy)
 {
-   FIXME("(%p) stub\n", _this);
-   return _this;
+    FIXME("(%p %p) stub\n", this, copy);
+    return this;
+}
+
+/* ??0ios@@IAE at XZ */
+/* ??0ios@@IEAA at XZ */
+DEFINE_THISCALL_WRAPPER(ios_ctor, 4)
+ios* __thiscall ios_ctor(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return this;
+}
+
+/* ??0ios@@QAE at PAVstreambuf@@@Z */
+/* ??0ios@@QEAA at PEAVstreambuf@@@Z */
+DEFINE_THISCALL_WRAPPER(ios_sb_ctor, 8)
+ios* __thiscall ios_sb_ctor(ios *this, streambuf *sb)
+{
+    FIXME("(%p %p) stub\n", this, sb);
+    return this;
+}
+
+/* ??1ios@@UAE at XZ */
+/* ??1ios@@UEAA at XZ */
+DEFINE_THISCALL_WRAPPER(ios_dtor, 4)
+void __thiscall ios_dtor(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ??4ios@@IAEAAV0 at ABV0@@Z */
+/* ??4ios@@IEAAAEAV0 at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(ios_assign, 8)
+ios* __thiscall ios_assign(ios *this, const ios *rhs)
+{
+    FIXME("(%p %p) stub\n", this, rhs);
+    return this;
+}
+
+/* ??7ios@@QBEHXZ */
+/* ??7ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_op_not, 4)
+int __thiscall ios_op_not(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ??Bios@@QBEPAXXZ */
+/* ??Bios@@QEBAPEAXXZ */
+DEFINE_THISCALL_WRAPPER(ios_op_void, 4)
+void* __thiscall ios_op_void(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return NULL;
+}
+
+/* ??_Eios@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(ios_vector_dtor, 8)
+ios* __thiscall ios_vector_dtor(ios *this, unsigned int flags)
+{
+    TRACE("(%p %x)\n", this, flags);
+    if (flags & 2) {
+        /* we have an array, with the number of elements stored before the first object */
+        INT_PTR i, *ptr = (INT_PTR *)this-1;
+
+        for (i = *ptr-1; i >= 0; i--)
+            ios_dtor(this+i);
+        MSVCRT_operator_delete(ptr);
+    } else {
+        ios_dtor(this);
+        if (flags & 1)
+            MSVCRT_operator_delete(this);
+    }
+    return this;
+}
+
+/* ??_Gios@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(ios_scalar_dtor, 8)
+ios* __thiscall ios_scalar_dtor(ios *this, unsigned int flags)
+{
+    TRACE("(%p %x)\n", this, flags);
+    ios_dtor(this);
+    if (flags & 1) MSVCRT_operator_delete(this);
+    return this;
+}
+
+/* ?bad at ios@@QBEHXZ */
+/* ?bad at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_bad, 4)
+int __thiscall ios_bad(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?bitalloc at ios@@SAJXZ */
+LONG __cdecl ios_bitalloc(void)
+{
+    FIXME("() stub\n");
+    return 0;
+}
+
+/* ?clear at ios@@QAEXH at Z */
+/* ?clear at ios@@QEAAXH at Z */
+DEFINE_THISCALL_WRAPPER(ios_clear, 8)
+void __thiscall ios_clear(ios *this, int state)
+{
+    FIXME("(%p %d) stub\n", this, state);
+}
+
+/* ?clrlock at ios@@QAAXXZ */
+/* ?clrlock at ios@@QEAAXXZ */
+void __cdecl ios_clrlock(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?delbuf at ios@@QAEXH at Z */
+/* ?delbuf at ios@@QEAAXH at Z */
+DEFINE_THISCALL_WRAPPER(ios_delbuf_set, 8)
+void __thiscall ios_delbuf_set(ios *this, int delete)
+{
+    FIXME("(%p %d) stub\n", this, delete);
+}
+
+/* ?delbuf at ios@@QBEHXZ */
+/* ?delbuf at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_delbuf_get, 4)
+int __thiscall ios_delbuf_get(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?dec@@YAAAVios@@AAV1@@Z */
+/* ?dec@@YAAEAVios@@AEAV1@@Z */
+ios* __cdecl ios_dec(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return this;
+}
+
+/* ?eof at ios@@QBEHXZ */
+/* ?eof at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_eof, 4)
+int __thiscall ios_eof(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?fail at ios@@QBEHXZ */
+/* ?fail at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_fail, 4)
+int __thiscall ios_fail(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?fill at ios@@QAEDD at Z */
+/* ?fill at ios@@QEAADD at Z */
+DEFINE_THISCALL_WRAPPER(ios_fill_set, 8)
+char __thiscall ios_fill_set(ios *this, char fill)
+{
+    FIXME("(%p %d) stub\n", this, fill);
+    return EOF;
+}
+
+/* ?fill at ios@@QBEDXZ */
+/* ?fill at ios@@QEBADXZ */
+DEFINE_THISCALL_WRAPPER(ios_fill_get, 4)
+char __thiscall ios_fill_get(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return EOF;
+}
+
+/* ?flags at ios@@QAEJJ at Z */
+/* ?flags at ios@@QEAAJJ at Z */
+DEFINE_THISCALL_WRAPPER(ios_flags_set, 8)
+LONG __thiscall ios_flags_set(ios *this, LONG flags)
+{
+    FIXME("(%p %x) stub\n", this, flags);
+    return 0;
+}
+
+/* ?flags at ios@@QBEJXZ */
+/* ?flags at ios@@QEBAJXZ */
+DEFINE_THISCALL_WRAPPER(ios_flags_get, 4)
+LONG __thiscall ios_flags_get(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?good at ios@@QBEHXZ */
+/* ?good at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_good, 4)
+int __thiscall ios_good(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?hex@@YAAAVios@@AAV1@@Z */
+/* ?hex@@YAAEAVios@@AEAV1@@Z */
+ios* __cdecl ios_hex(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return this;
+}
+
+/* ?init at ios@@IAEXPAVstreambuf@@@Z */
+/* ?init at ios@@IEAAXPEAVstreambuf@@@Z */
+DEFINE_THISCALL_WRAPPER(ios_init, 8)
+void __thiscall ios_init(ios *this, streambuf *sb)
+{
+    FIXME("(%p %p) stub\n", this, sb);
+}
+
+/* ?iword at ios@@QBEAAJH at Z */
+/* ?iword at ios@@QEBAAEAJH at Z */
+DEFINE_THISCALL_WRAPPER(ios_iword, 8)
+LONG* __thiscall ios_iword(const ios *this, int index)
+{
+    FIXME("(%p %d) stub\n", this, index);
+    return NULL;
+}
+
+/* ?lock at ios@@QAAXXZ */
+/* ?lock at ios@@QEAAXXZ */
+void __cdecl ios_lock(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?lockbuf at ios@@QAAXXZ */
+/* ?lockbuf at ios@@QEAAXXZ */
+void __cdecl ios_lockbuf(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?lockc at ios@@KAXXZ */
+void __cdecl ios_lockc(void)
+{
+    FIXME("() stub\n");
+}
+
+/* ?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ */
+/* ?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ */
+DEFINE_THISCALL_WRAPPER(ios_lockptr, 4)
+CRITICAL_SECTION* __thiscall ios_lockptr(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return NULL;
+}
+
+/* ?oct@@YAAAVios@@AAV1@@Z */
+/* ?oct@@YAAEAVios@@AEAV1@@Z */
+ios* __cdecl ios_oct(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return this;
+}
+
+/* ?precision at ios@@QAEHH at Z */
+/* ?precision at ios@@QEAAHH at Z */
+DEFINE_THISCALL_WRAPPER(ios_precision_set, 8)
+int __thiscall ios_precision_set(ios *this, int prec)
+{
+    FIXME("(%p %d) stub\n", this, prec);
+    return 0;
+}
+
+/* ?precision at ios@@QBEHXZ */
+/* ?precision at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_precision_get, 4)
+int __thiscall ios_precision_get(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?pword at ios@@QBEAAPAXH at Z */
+/* ?pword at ios@@QEBAAEAPEAXH at Z */
+DEFINE_THISCALL_WRAPPER(ios_pword, 8)
+void** __thiscall ios_pword(const ios *this, int index)
+{
+    FIXME("(%p %d) stub\n", this, index);
+    return NULL;
+}
+
+/* ?rdbuf at ios@@QBEPAVstreambuf@@XZ */
+/* ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ */
+DEFINE_THISCALL_WRAPPER(ios_rdbuf, 4)
+streambuf* __thiscall ios_rdbuf(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return NULL;
+}
+
+/* ?rdstate at ios@@QBEHXZ */
+/* ?rdstate at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_rdstate, 4)
+int __thiscall ios_rdstate(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?setf at ios@@QAEJJ at Z */
+/* ?setf at ios@@QEAAJJ at Z */
+DEFINE_THISCALL_WRAPPER(ios_setf, 8)
+LONG __thiscall ios_setf(ios *this, LONG flags)
+{
+    FIXME("(%p %x) stub\n", this, flags);
+    return 0;
+}
+
+/* ?setf at ios@@QAEJJJ at Z */
+/* ?setf at ios@@QEAAJJJ at Z */
+DEFINE_THISCALL_WRAPPER(ios_setf_mask, 12)
+LONG __thiscall ios_setf_mask(ios *this, LONG flags, LONG mask)
+{
+    FIXME("(%p %x %x) stub\n", this, flags, mask);
+    return 0;
+}
+
+/* ?setlock at ios@@QAAXXZ */
+/* ?setlock at ios@@QEAAXXZ */
+void __cdecl ios_setlock(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?sync_with_stdio at ios@@SAXXZ */
+void __cdecl ios_sync_with_stdio(void)
+{
+    FIXME("() stub\n");
+}
+
+/* ?tie at ios@@QAEPAVostream@@PAV2@@Z */
+/* ?tie at ios@@QEAAPEAVostream@@PEAV2@@Z */
+DEFINE_THISCALL_WRAPPER(ios_tie_set, 8)
+ostream* __thiscall ios_tie_set(ios *this, ostream *ostr)
+{
+    FIXME("(%p %p) stub\n", this, ostr);
+    return NULL;
+}
+
+/* ?tie at ios@@QBEPAVostream@@XZ */
+/* ?tie at ios@@QEBAPEAVostream@@XZ */
+DEFINE_THISCALL_WRAPPER(ios_tie_get, 4)
+ostream* __thiscall ios_tie_get(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return NULL;
+}
+
+/* ?unlock at ios@@QAAXXZ */
+/* ?unlock at ios@@QEAAXXZ */
+void __cdecl ios_unlock(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?unlockbuf at ios@@QAAXXZ */
+/* ?unlockbuf at ios@@QEAAXXZ */
+void __cdecl ios_unlockbuf(ios *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?unlockc at ios@@KAXXZ */
+void __cdecl ios_unlockc(void)
+{
+    FIXME("() stub\n");
+}
+
+/* ?unsetf at ios@@QAEJJ at Z */
+/* ?unsetf at ios@@QEAAJJ at Z */
+DEFINE_THISCALL_WRAPPER(ios_unsetf, 8)
+LONG __thiscall ios_unsetf(ios *this, LONG flags)
+{
+    FIXME("(%p %x) stub\n", this, flags);
+    return 0;
+}
+
+/* ?width at ios@@QAEHH at Z */
+/* ?width at ios@@QEAAHH at Z */
+DEFINE_THISCALL_WRAPPER(ios_width_set, 8)
+int __thiscall ios_width_set(ios *this, int width)
+{
+    FIXME("(%p %d) stub\n", this, width);
+    return 0;
+}
+
+/* ?width at ios@@QBEHXZ */
+/* ?width at ios@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(ios_width_get, 4)
+int __thiscall ios_width_get(const ios *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?xalloc at ios@@SAHXZ */
+int __cdecl ios_xalloc(void)
+{
+    FIXME("() stub\n");
+    return 0;
 }
 
 /******************************************************************
  *		 ??0ostrstream@@QAE at XZ (MSVCRTI.@)
  */
 DEFINE_THISCALL_WRAPPER(MSVCIRT_ostrstream_ctor,8)
-void * __thiscall MSVCIRT_ostrstream_ctor(class_ostream *this, BOOL virt_init)
+void * __thiscall MSVCIRT_ostrstream_ctor(ostream *this, BOOL virt_init)
 {
    FIXME("(%p %x) stub\n", this, virt_init);
    return this;
@@ -708,7 +1137,7 @@ void * __thiscall MSVCIRT_ostrstream_ctor(class_ostream *this, BOOL virt_init)
  *		 ??1ostrstream@@UAE at XZ (MSVCRTI.@)
  */
 DEFINE_THISCALL_WRAPPER(MSVCIRT_ostrstream_dtor,4)
-void __thiscall MSVCIRT_ostrstream_dtor(class_ios *base)
+void __thiscall MSVCIRT_ostrstream_dtor(ios *base)
 {
     FIXME("(%p) stub\n", base);
 }
@@ -718,7 +1147,7 @@ void __thiscall MSVCIRT_ostrstream_dtor(class_ios *base)
  *    class ostream & __thiscall ostream::operator<<(unsigned char)
  */
 DEFINE_THISCALL_WRAPPER(MSVCIRT_operator_sl_uchar,8)
-void * __thiscall MSVCIRT_operator_sl_uchar(class_ostream * _this, unsigned char ch)
+void * __thiscall MSVCIRT_operator_sl_uchar(ostream * _this, unsigned char ch)
 {
    FIXME("(%p)->(%c) stub\n", _this, ch);
    return _this;
@@ -729,7 +1158,7 @@ void * __thiscall MSVCIRT_operator_sl_uchar(class_ostream * _this, unsigned char
  *        class ostream & __thiscall ostream::operator<<(int)
  */
 DEFINE_THISCALL_WRAPPER(MSVCIRT_operator_sl_int,8)
-void * __thiscall MSVCIRT_operator_sl_int(class_ostream * _this, int integer)
+void * __thiscall MSVCIRT_operator_sl_int(ostream * _this, int integer)
 {
    FIXME("(%p)->(%d) stub\n", _this, integer);
    return _this;
@@ -740,7 +1169,7 @@ void * __thiscall MSVCIRT_operator_sl_int(class_ostream * _this, int integer)
  *    class ostream & __thiscall ostream::operator<<(char const *)
  */
 DEFINE_THISCALL_WRAPPER(MSVCIRT_operator_sl_pchar,8)
-void * __thiscall MSVCIRT_operator_sl_pchar(class_ostream * _this, const char * string)
+void * __thiscall MSVCIRT_operator_sl_pchar(ostream * _this, const char * string)
 {
    FIXME("(%p)->(%s) stub\n", _this, debugstr_a(string));
    return _this;
@@ -751,7 +1180,7 @@ void * __thiscall MSVCIRT_operator_sl_pchar(class_ostream * _this, const char *
  *    class ostream & __thiscall ostream::operator<<(class ostream & (__cdecl*)(class ostream &))
  */
 DEFINE_THISCALL_WRAPPER(MSVCIRT_operator_sl_callback,8)
-void * __thiscall MSVCIRT_operator_sl_callback(class_ostream * _this, class_ostream * (__cdecl*func)(class_ostream*))
+void * __thiscall MSVCIRT_operator_sl_callback(ostream * _this, ostream * (__cdecl*func)(ostream*))
 {
    TRACE("%p, %p\n", _this, func);
    return func(_this);
@@ -761,7 +1190,7 @@ void * __thiscall MSVCIRT_operator_sl_callback(class_ostream * _this, class_ostr
  *		?endl@@YAAAVostream@@AAV1@@Z (MSVCRTI.@)
  *           class ostream & __cdecl endl(class ostream &)
  */
-void * CDECL MSVCIRT_endl(class_ostream * _this)
+void * CDECL MSVCIRT_endl(ostream * _this)
 {
    FIXME("(%p)->() stub\n", _this);
    return _this;
@@ -771,7 +1200,7 @@ void * CDECL MSVCIRT_endl(class_ostream * _this)
  *		?ends@@YAAAVostream@@AAV1@@Z (MSVCRTI.@)
  *           class ostream & __cdecl ends(class ostream &)
  */
-void * CDECL MSVCIRT_ends(class_ostream * _this)
+void * CDECL MSVCIRT_ends(ostream * _this)
 {
    FIXME("(%p)->() stub\n", _this);
    return _this;
@@ -839,6 +1268,7 @@ static void init_io(void *base)
 {
 #ifdef __x86_64__
     init_streambuf_rtti(base);
+    init_ios_rtti(base);
 #endif
 }
 
diff --git a/dlls/msvcirt/msvcirt.h b/dlls/msvcirt/msvcirt.h
index 4751e8c..5ec369b 100644
--- a/dlls/msvcirt/msvcirt.h
+++ b/dlls/msvcirt/msvcirt.h
@@ -24,11 +24,36 @@ typedef LONG streamoff;
 typedef LONG streampos;
 
 typedef enum {
+    IOSTATE_goodbit   = 0x0,
+    IOSTATE_eofbit    = 0x1,
+    IOSTATE_failbit   = 0x2,
+    IOSTATE_badbit    = 0x4
+} ios_io_state;
+
+typedef enum {
     SEEKDIR_beg = 0,
     SEEKDIR_cur = 1,
     SEEKDIR_end = 2
 } ios_seek_dir;
 
+typedef enum {
+    FLAGS_skipws     = 0x1,
+    FLAGS_left       = 0x2,
+    FLAGS_right      = 0x4,
+    FLAGS_internal   = 0x8,
+    FLAGS_dec        = 0x10,
+    FLAGS_oct        = 0x20,
+    FLAGS_hex        = 0x40,
+    FLAGS_showbase   = 0x80,
+    FLAGS_showpoint  = 0x100,
+    FLAGS_uppercase  = 0x200,
+    FLAGS_showpos    = 0x400,
+    FLAGS_scientific = 0x800,
+    FLAGS_fixed      = 0x1000,
+    FLAGS_unitbuf    = 0x2000,
+    FLAGS_stdio      = 0x4000
+} ios_flags;
+
 extern void* (__cdecl *MSVCRT_operator_new)(SIZE_T);
 extern void (__cdecl *MSVCRT_operator_delete)(void*);
 
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index 36d42ee..dc66bfa 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -36,12 +36,12 @@
 @ stub -arch=win64 ??0ifstream@@QEAA at PEBDHH@Z
 @ stub -arch=win32 ??0ifstream@@QAE at XZ  # __thiscall ifstream::ifstream(void)
 @ stub -arch=win64 ??0ifstream@@QEAA at XZ
-@ stub -arch=win32 ??0ios@@IAE at ABV0@@Z  # __thiscall ios::ios(class ios const &)
-@ stub -arch=win64 ??0ios@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0ios@@IAE at XZ  # __thiscall ios::ios(void)
-@ stub -arch=win64 ??0ios@@IEAA at XZ
-@ stub -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z  # __thiscall ios::ios(class streambuf *)
-@ stub -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0ios@@IAE at ABV0@@Z(ptr ptr) ios_copy_ctor
+@ cdecl -arch=win64 ??0ios@@IEAA at AEBV0@@Z(ptr ptr) ios_copy_ctor
+@ thiscall -arch=win32 ??0ios@@IAE at XZ(ptr) ios_ctor
+@ cdecl -arch=win64 ??0ios@@IEAA at XZ(ptr) ios_ctor
+@ thiscall -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z(ptr ptr) ios_sb_ctor
+@ cdecl -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z(ptr ptr) ios_sb_ctor
 @ stub -arch=win32 ??0iostream@@IAE at ABV0@@Z  # __thiscall iostream::iostream(class iostream const &)
 @ stub -arch=win64 ??0iostream@@IEAA at AEBV0@@Z
 @ stub -arch=win32 ??0iostream@@IAE at XZ  # __thiscall iostream::iostream(void)
@@ -140,8 +140,8 @@
 @ stub -arch=win64 ??1fstream@@UEAA at XZ
 @ stub -arch=win32 ??1ifstream@@UAE at XZ  # virtual __thiscall ifstream::~ifstream(void)
 @ stub -arch=win64 ??1ifstream@@UEAA at XZ
-@ thiscall -arch=win32 ??1ios@@UAE at XZ(ptr) MSVCIRT_ios_sl_void # virtual __thiscall ios::~ios(void)
-@ cdecl -arch=win64 ??1ios@@UEAA at XZ(ptr) MSVCIRT_ios_sl_void
+@ thiscall -arch=win32 ??1ios@@UAE at XZ(ptr) ios_dtor
+@ cdecl -arch=win64 ??1ios@@UEAA at XZ(ptr) ios_dtor
 @ stub -arch=win32 ??1iostream@@UAE at XZ  # virtual __thiscall iostream::~iostream(void)
 @ stub -arch=win64 ??1iostream@@UEAA at XZ
 @ stub -arch=win32 ??1istream@@UAE at XZ  # virtual __thiscall istream::~istream(void)
@@ -180,8 +180,8 @@
 @ stub -arch=win64 ??4fstream@@QEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4ifstream@@QAEAAV0 at ABV0@@Z  # class ifstream & __thiscall ifstream::operator=(class ifstream const &)
 @ stub -arch=win64 ??4ifstream@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z  # class ios & __thiscall ios::operator=(class ios const &)
-@ stub -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z(ptr ptr) ios_assign
+@ cdecl -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) ios_assign
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z  # class iostream & __thiscall iostream::operator=(class iostream &)
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z  # class iostream & __thiscall iostream::operator=(class streambuf *)
@@ -298,15 +298,15 @@
 @ stub -arch=win64 ??6ostream@@QEAAAEAV0 at PEBE@Z
 @ stub -arch=win32 ??6ostream@@QAEAAV0 at PBX@Z  # class ostream & __thiscall ostream::operator<<(void const *)
 @ stub -arch=win64 ??6ostream@@QEAAAEAV0 at PEBX@Z
-@ stub -arch=win32 ??7ios@@QBEHXZ  # int __thiscall ios::operator!(void)const 
-@ stub -arch=win64 ??7ios@@QEBAHXZ
-@ stub -arch=win32 ??Bios@@QBEPAXXZ  # __thiscall ios::operator void *(void)const 
-@ stub -arch=win64 ??Bios@@QEBAPEAXXZ
+@ thiscall -arch=win32 ??7ios@@QBEHXZ(ptr) ios_op_not
+@ cdecl -arch=win64 ??7ios@@QEBAHXZ(ptr) ios_op_not
+@ thiscall -arch=win32 ??Bios@@QBEPAXXZ(ptr) ios_op_void
+@ cdecl -arch=win64 ??Bios@@QEBAPEAXXZ(ptr) ios_op_void
 @ extern ??_7exception@@6B@ MSVCP_exception_vtable
 # @ extern ??_7filebuf@@6B@  # const filebuf::`vftable'
 # @ extern ??_7fstream@@6B@  # const fstream::`vftable'
 # @ extern ??_7ifstream@@6B@  # const ifstream::`vftable'
-# @ extern ??_7ios@@6B@  # const ios::`vftable'
+@ extern ??_7ios@@6B@ MSVCP_ios_vtable
 # @ extern ??_7iostream@@6B@  # const iostream::`vftable'
 # @ extern ??_7istream@@6B@  # const istream::`vftable'
 # @ extern ??_7istream_withassign@@6B@  # const istream_withassign::`vftable'
@@ -365,7 +365,7 @@
 @ stub -arch=win32 ??_Efilebuf@@UAEPAXI at Z  # virtual void * __thiscall filebuf::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z  # virtual void * __thiscall fstream::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`vector deleting destructor'(unsigned int)
-@ stub -arch=win32 ??_Eios@@UAEPAXI at Z  # virtual void * __thiscall ios::`vector deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) ios_vector_dtor
 @ stub -arch=win32 ??_Eiostream@@UAEPAXI at Z  # virtual void * __thiscall iostream::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eistream@@UAEPAXI at Z  # virtual void * __thiscall istream::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z  # virtual void * __thiscall istream_withassign::`vector deleting destructor'(unsigned int)
@@ -384,7 +384,7 @@
 @ stub -arch=win32 ??_Gfilebuf@@UAEPAXI at Z  # virtual void * __thiscall filebuf::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z  # virtual void * __thiscall fstream::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`scalar deleting destructor'(unsigned int)
-@ stub -arch=win32 ??_Gios@@UAEPAXI at Z  # virtual void * __thiscall ios::`scalar deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) ios_scalar_dtor
 @ stub -arch=win32 ??_Giostream@@UAEPAXI at Z  # virtual void * __thiscall iostream::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gistream@@UAEPAXI at Z  # virtual void * __thiscall istream::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z  # virtual void * __thiscall istream_withassign::`scalar deleting destructor'(unsigned int)
@@ -410,19 +410,19 @@
 @ stub -arch=win64 ?attach at ifstream@@QEAAXH at Z
 @ stub -arch=win32 ?attach at ofstream@@QAEXH at Z  # void __thiscall ofstream::attach(int)
 @ stub -arch=win64 ?attach at ofstream@@QEAAXH at Z
-@ stub -arch=win32 ?bad at ios@@QBEHXZ  # int __thiscall ios::bad(void)const 
-@ stub -arch=win64 ?bad at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?bad at ios@@QBEHXZ(ptr) ios_bad
+@ cdecl -arch=win64 ?bad at ios@@QEBAHXZ(ptr) ios_bad
 @ thiscall -arch=win32 ?base at streambuf@@IBEPADXZ(ptr) streambuf_base
 @ cdecl -arch=win64 ?base at streambuf@@IEBAPEADXZ(ptr) streambuf_base
 # @ extern ?basefield at ios@@2JB  # static long const ios::basefield
 # @ extern ?binary at filebuf@@2HB  # static int const filebuf::binary
-@ stub ?bitalloc at ios@@SAJXZ  # static long __cdecl ios::bitalloc(void)
+@ cdecl ?bitalloc at ios@@SAJXZ() ios_bitalloc
 @ thiscall -arch=win32 ?blen at streambuf@@IBEHXZ(ptr) streambuf_blen
 @ cdecl -arch=win64 ?blen at streambuf@@IEBAHXZ(ptr) streambuf_blen
 @ stub ?cerr@@3Vostream_withassign@@A  # class ostream_withassign cerr
 @ stub ?cin@@3Vistream_withassign@@A  # class istream_withassign cin
-@ stub -arch=win32 ?clear at ios@@QAEXH at Z  # void __thiscall ios::clear(int)
-@ stub -arch=win64 ?clear at ios@@QEAAXH at Z
+@ thiscall -arch=win32 ?clear at ios@@QAEXH at Z(ptr long) ios_clear
+@ cdecl -arch=win64 ?clear at ios@@QEAAXH at Z(ptr long) ios_clear
 @ stub ?clog@@3Vostream_withassign@@A  # class ostream_withassign clog
 @ stub -arch=win32 ?close at filebuf@@QAEPAV1 at XZ  # class filebuf * __thiscall filebuf::close(void)
 @ stub -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ
@@ -432,19 +432,19 @@
 @ stub -arch=win64 ?close at ifstream@@QEAAXXZ
 @ stub -arch=win32 ?close at ofstream@@QAEXXZ  # void __thiscall ofstream::close(void)
 @ stub -arch=win64 ?close at ofstream@@QEAAXXZ
-@ stub -arch=win32 ?clrlock at ios@@QAAXXZ  # void __cdecl ios::clrlock(void)
-@ stub -arch=win64 ?clrlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?clrlock at ios@@QAAXXZ(ptr) ios_clrlock
+@ cdecl -arch=win64 ?clrlock at ios@@QEAAXXZ(ptr) ios_clrlock
 @ thiscall -arch=win32 ?clrlock at streambuf@@QAEXXZ(ptr) streambuf_clrlock
 @ cdecl -arch=win64 ?clrlock at streambuf@@QEAAXXZ(ptr) streambuf_clrlock
 @ stub ?cout@@3Vostream_withassign@@A  # class ostream_withassign cout
 @ thiscall -arch=win32 ?dbp at streambuf@@QAEXXZ(ptr) streambuf_dbp
 @ cdecl -arch=win64 ?dbp at streambuf@@QEAAXXZ(ptr) streambuf_dbp
-@ stub -arch=win32 ?dec@@YAAAVios@@AAV1@@Z  # class ios & __cdecl dec(class ios &)
-@ stub -arch=win64 ?dec@@YAAEAVios@@AEAV1@@Z
-@ stub -arch=win32 ?delbuf at ios@@QAEXH at Z  # void __thiscall ios::delbuf(int)
-@ stub -arch=win64 ?delbuf at ios@@QEAAXH at Z
-@ stub -arch=win32 ?delbuf at ios@@QBEHXZ  # int __thiscall ios::delbuf(void)const 
-@ stub -arch=win64 ?delbuf at ios@@QEBAHXZ
+@ cdecl -arch=win32 ?dec@@YAAAVios@@AAV1@@Z(ptr) ios_dec
+@ cdecl -arch=win64 ?dec@@YAAEAVios@@AEAV1@@Z(ptr) ios_dec
+@ thiscall -arch=win32 ?delbuf at ios@@QAEXH at Z(ptr long) ios_delbuf_set
+@ cdecl -arch=win64 ?delbuf at ios@@QEAAXH at Z(ptr long) ios_delbuf_set
+@ thiscall -arch=win32 ?delbuf at ios@@QBEHXZ(ptr) ios_delbuf_get
+@ cdecl -arch=win64 ?delbuf at ios@@QEBAHXZ(ptr) ios_delbuf_get
 @ thiscall -arch=win32 ?doallocate at streambuf@@MAEHXZ(ptr) streambuf_doallocate
 @ cdecl -arch=win64 ?doallocate at streambuf@@MEAAHXZ(ptr) streambuf_doallocate
 @ stub -arch=win32 ?doallocate at strstreambuf@@MAEHXZ  # virtual int __thiscall strstreambuf::doallocate(void)
@@ -461,13 +461,13 @@
 @ cdecl -arch=win64 ?endl@@YAAEAVostream@@AEAV1@@Z(ptr) MSVCIRT_endl
 @ cdecl -arch=win32 ?ends@@YAAAVostream@@AAV1@@Z(ptr) MSVCIRT_ends  # class ostream & __cdecl ends(class ostream &)
 @ cdecl -arch=win64 ?ends@@YAAEAVostream@@AEAV1@@Z(ptr) MSVCIRT_ends
-@ stub -arch=win32 ?eof at ios@@QBEHXZ  # int __thiscall ios::eof(void)const 
-@ stub -arch=win64 ?eof at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?eof at ios@@QBEHXZ(ptr) ios_eof
+@ cdecl -arch=win64 ?eof at ios@@QEBAHXZ(ptr) ios_eof
 @ thiscall -arch=win32 ?epptr at streambuf@@IBEPADXZ(ptr) streambuf_epptr
 @ cdecl -arch=win64 ?epptr at streambuf@@IEBAPEADXZ(ptr) streambuf_epptr
 # @ extern ?fLockcInit at ios@@0HA  # static int ios::fLockcInit
-@ stub -arch=win32 ?fail at ios@@QBEHXZ  # int __thiscall ios::fail(void)const 
-@ stub -arch=win64 ?fail at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?fail at ios@@QBEHXZ(ptr) ios_fail
+@ cdecl -arch=win64 ?fail at ios@@QEBAHXZ(ptr) ios_fail
 @ stub -arch=win32 ?fd at filebuf@@QBEHXZ  # int __thiscall filebuf::fd(void)const 
 @ stub -arch=win64 ?fd at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?fd at fstream@@QBEHXZ  # int __thiscall fstream::fd(void)const 
@@ -476,14 +476,14 @@
 @ stub -arch=win64 ?fd at ifstream@@QEBAHXZ
 @ stub -arch=win32 ?fd at ofstream@@QBEHXZ  # int __thiscall ofstream::fd(void)const 
 @ stub -arch=win64 ?fd at ofstream@@QEBAHXZ
-@ stub -arch=win32 ?fill at ios@@QAEDD at Z  # char __thiscall ios::fill(char)
-@ stub -arch=win64 ?fill at ios@@QEAADD at Z
-@ stub -arch=win32 ?fill at ios@@QBEDXZ  # char __thiscall ios::fill(void)const 
-@ stub -arch=win64 ?fill at ios@@QEBADXZ
-@ stub -arch=win32 ?flags at ios@@QAEJJ at Z  # long __thiscall ios::flags(long)
-@ stub -arch=win64 ?flags at ios@@QEAAJJ at Z
-@ stub -arch=win32 ?flags at ios@@QBEJXZ  # long __thiscall ios::flags(void)const 
-@ stub -arch=win64 ?flags at ios@@QEBAJXZ
+@ thiscall -arch=win32 ?fill at ios@@QAEDD at Z(ptr long) ios_fill_set
+@ cdecl -arch=win64 ?fill at ios@@QEAADD at Z(ptr long) ios_fill_set
+@ thiscall -arch=win32 ?fill at ios@@QBEDXZ(ptr) ios_fill_get
+@ cdecl -arch=win64 ?fill at ios@@QEBADXZ(ptr) ios_fill_get
+@ thiscall -arch=win32 ?flags at ios@@QAEJJ at Z(ptr long) ios_flags_set
+@ cdecl -arch=win64 ?flags at ios@@QEAAJJ at Z(ptr long) ios_flags_set
+@ thiscall -arch=win32 ?flags at ios@@QBEJXZ(ptr) ios_flags_get
+@ cdecl -arch=win64 ?flags at ios@@QEBAJXZ(ptr) ios_flags_get
 # @ extern ?floatfield at ios@@2JB  # static long const ios::floatfield
 @ stub -arch=win32 ?flush@@YAAAVostream@@AAV1@@Z  # class ostream & __cdecl flush(class ostream &)
 @ stub -arch=win64 ?flush@@YAAEAVostream@@AEAV1@@Z
@@ -523,18 +523,18 @@
 @ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEADHD@Z
 @ stub -arch=win32 ?getline at istream@@QAEAAV1 at PAEHD@Z  # class istream & __thiscall istream::getline(unsigned char *,int,char)
 @ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEAEHD@Z
-@ stub -arch=win32 ?good at ios@@QBEHXZ  # int __thiscall ios::good(void)const 
-@ stub -arch=win64 ?good at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?good at ios@@QBEHXZ(ptr) ios_good
+@ cdecl -arch=win64 ?good at ios@@QEBAHXZ(ptr) ios_good
 @ thiscall -arch=win32 ?gptr at streambuf@@IBEPADXZ(ptr) streambuf_gptr
 @ cdecl -arch=win64 ?gptr at streambuf@@IEBAPEADXZ(ptr) streambuf_gptr
-@ stub -arch=win32 ?hex@@YAAAVios@@AAV1@@Z  # class ios & __cdecl hex(class ios &)
-@ stub -arch=win64 ?hex@@YAAEAVios@@AEAV1@@Z
+@ cdecl -arch=win32 ?hex@@YAAAVios@@AAV1@@Z(ptr) ios_hex
+@ cdecl -arch=win64 ?hex@@YAAEAVios@@AEAV1@@Z(ptr) ios_hex
 @ stub -arch=win32 ?ignore at istream@@QAEAAV1 at HH@Z  # class istream & __thiscall istream::ignore(int,int)
 @ stub -arch=win64 ?ignore at istream@@QEAAAEAV1 at HH@Z
 @ thiscall -arch=win32 ?in_avail at streambuf@@QBEHXZ(ptr) streambuf_in_avail
 @ cdecl -arch=win64 ?in_avail at streambuf@@QEBAHXZ(ptr) streambuf_in_avail
-@ stub -arch=win32 ?init at ios@@IAEXPAVstreambuf@@@Z  # void __thiscall ios::init(class streambuf *)
-@ stub -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z
+@ thiscall -arch=win32 ?init at ios@@IAEXPAVstreambuf@@@Z(ptr ptr) ios_init
+@ cdecl -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z(ptr ptr) ios_init
 @ stub -arch=win32 ?ipfx at istream@@QAEHH at Z  # int __thiscall istream::ipfx(int)
 @ stub -arch=win64 ?ipfx at istream@@QEAAHH at Z
 @ stub -arch=win32 ?is_open at filebuf@@QBEHXZ  # int __thiscall filebuf::is_open(void)const 
@@ -547,21 +547,21 @@
 @ stub -arch=win64 ?is_open at ofstream@@QEBAHXZ
 @ stub -arch=win32 ?isfx at istream@@QAEXXZ  # void __thiscall istream::isfx(void)
 @ stub -arch=win64 ?isfx at istream@@QEAAXXZ
-@ stub -arch=win32 ?iword at ios@@QBEAAJH at Z  # long & __thiscall ios::iword(int)const 
-@ stub -arch=win64 ?iword at ios@@QEBAAEAJH at Z
-@ stub -arch=win32 ?lock at ios@@QAAXXZ  # void __cdecl ios::lock(void)
-@ stub -arch=win64 ?lock at ios@@QEAAXXZ
+@ thiscall -arch=win32 ?iword at ios@@QBEAAJH at Z(ptr long) ios_iword
+@ cdecl -arch=win64 ?iword at ios@@QEBAAEAJH at Z(ptr long) ios_iword
+@ cdecl -arch=win32 ?lock at ios@@QAAXXZ(ptr) ios_lock
+@ cdecl -arch=win64 ?lock at ios@@QEAAXXZ(ptr) ios_lock
 @ thiscall -arch=win32 ?lock at streambuf@@QAEXXZ(ptr) streambuf_lock
 @ cdecl -arch=win64 ?lock at streambuf@@QEAAXXZ(ptr) streambuf_lock
-@ stub -arch=win32 ?lockbuf at ios@@QAAXXZ  # void __cdecl ios::lockbuf(void)
-@ stub -arch=win64 ?lockbuf at ios@@QEAAXXZ
-@ stub ?lockc at ios@@KAXXZ  # static void __cdecl ios::lockc(void)
-@ stub -arch=win32 ?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ  # struct _CRT_CRITICAL_SECTION * __thiscall ios::lockptr(void)
-@ stub -arch=win64 ?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
+@ cdecl -arch=win32 ?lockbuf at ios@@QAAXXZ(ptr) ios_lockbuf
+@ cdecl -arch=win64 ?lockbuf at ios@@QEAAXXZ(ptr) ios_lockbuf
+@ cdecl ?lockc at ios@@KAXXZ() ios_lockc
+@ thiscall -arch=win32 ?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) ios_lockptr
+@ cdecl -arch=win64 ?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) ios_lockptr
 @ thiscall -arch=win32 ?lockptr at streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) streambuf_lockptr
 @ cdecl -arch=win64 ?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) streambuf_lockptr
-@ stub -arch=win32 ?oct@@YAAAVios@@AAV1@@Z  # class ios & __cdecl oct(class ios &)
-@ stub -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z
+@ cdecl -arch=win32 ?oct@@YAAAVios@@AAV1@@Z(ptr) ios_oct
+@ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) ios_oct
 @ stub -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z  # class filebuf * __thiscall filebuf::open(char const *,int,int)
 @ stub -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
 @ stub -arch=win32 ?open at fstream@@QAEXPBDHH at Z  # void __thiscall fstream::open(char const *,int,int)
@@ -599,10 +599,10 @@
 @ stub -arch=win64 ?peek at istream@@QEAAHXZ
 @ thiscall -arch=win32 ?pptr at streambuf@@IBEPADXZ(ptr) streambuf_pptr
 @ cdecl -arch=win64 ?pptr at streambuf@@IEBAPEADXZ(ptr) streambuf_pptr
-@ stub -arch=win32 ?precision at ios@@QAEHH at Z  # int __thiscall ios::precision(int)
-@ stub -arch=win64 ?precision at ios@@QEAAHH at Z
-@ stub -arch=win32 ?precision at ios@@QBEHXZ  # int __thiscall ios::precision(void)const 
-@ stub -arch=win64 ?precision at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?precision at ios@@QAEHH at Z(ptr long) ios_precision_set
+@ cdecl -arch=win64 ?precision at ios@@QEAAHH at Z(ptr long) ios_precision_set
+@ thiscall -arch=win32 ?precision at ios@@QBEHXZ(ptr) ios_precision_get
+@ cdecl -arch=win64 ?precision at ios@@QEBAHXZ(ptr) ios_precision_get
 @ stub -arch=win32 ?put at ostream@@QAEAAV1 at C@Z  # class ostream & __thiscall ostream::put(signed char)
 @ stub -arch=win64 ?put at ostream@@QEAAAEAV1 at C@Z
 @ stub -arch=win32 ?put at ostream@@QAEAAV1 at D@Z  # class ostream & __thiscall ostream::put(char)
@@ -611,14 +611,14 @@
 @ stub -arch=win64 ?put at ostream@@QEAAAEAV1 at E@Z
 @ stub -arch=win32 ?putback at istream@@QAEAAV1 at D@Z  # class istream & __thiscall istream::putback(char)
 @ stub -arch=win64 ?putback at istream@@QEAAAEAV1 at D@Z
-@ stub -arch=win32 ?pword at ios@@QBEAAPAXH at Z  # void * & __thiscall ios::pword(int)const 
-@ stub -arch=win64 ?pword at ios@@QEBAAEAPEAXH at Z
+@ thiscall -arch=win32 ?pword at ios@@QBEAAPAXH at Z(ptr long) ios_pword
+@ cdecl -arch=win64 ?pword at ios@@QEBAAEAPEAXH at Z(ptr long) ios_pword
 @ stub -arch=win32 ?rdbuf at fstream@@QBEPAVfilebuf@@XZ  # class filebuf * __thiscall fstream::rdbuf(void)const 
 @ stub -arch=win64 ?rdbuf at fstream@@QEBAPEAVfilebuf@@XZ
 @ stub -arch=win32 ?rdbuf at ifstream@@QBEPAVfilebuf@@XZ  # class filebuf * __thiscall ifstream::rdbuf(void)const 
 @ stub -arch=win64 ?rdbuf at ifstream@@QEBAPEAVfilebuf@@XZ
-@ stub -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ  # class streambuf * __thiscall ios::rdbuf(void)const 
-@ stub -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ(ptr) ios_rdbuf
+@ cdecl -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ(ptr) ios_rdbuf
 @ stub -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ  # class strstreambuf * __thiscall istrstream::rdbuf(void)const 
 @ stub -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at ofstream@@QBEPAVfilebuf@@XZ  # class filebuf * __thiscall ofstream::rdbuf(void)const 
@@ -629,8 +629,8 @@
 @ stub -arch=win64 ?rdbuf at stdiostream@@QEBAPEAVstdiobuf@@XZ
 @ stub -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ  # class strstreambuf * __thiscall strstream::rdbuf(void)const 
 @ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
-@ stub -arch=win32 ?rdstate at ios@@QBEHXZ  # int __thiscall ios::rdstate(void)const 
-@ stub -arch=win64 ?rdstate at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?rdstate at ios@@QBEHXZ(ptr) ios_rdstate
+@ cdecl -arch=win64 ?rdstate at ios@@QEBAHXZ(ptr) ios_rdstate
 @ stub -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z  # class istream & __thiscall istream::read(signed char *,int)
 @ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEACH@Z
 @ stub -arch=win32 ?read at istream@@QAEAAV1 at PADH@Z  # class istream & __thiscall istream::read(char *,int)
@@ -671,14 +671,14 @@
 @ cdecl -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z(ptr ptr long) streambuf_setbuf
 @ stub -arch=win32 ?setbuf at strstreambuf@@UAEPAVstreambuf@@PADH at Z  # virtual class streambuf * __thiscall strstreambuf::setbuf(char *,int)
 @ stub -arch=win64 ?setbuf at strstreambuf@@UEAAPEAVstreambuf@@PEADH at Z
-@ stub -arch=win32 ?setf at ios@@QAEJJ at Z  # long __thiscall ios::setf(long)
-@ stub -arch=win64 ?setf at ios@@QEAAJJ at Z
-@ stub -arch=win32 ?setf at ios@@QAEJJJ at Z  # long __thiscall ios::setf(long,long)
-@ stub -arch=win64 ?setf at ios@@QEAAJJJ at Z
+@ thiscall -arch=win32 ?setf at ios@@QAEJJ at Z(ptr long) ios_setf
+@ cdecl -arch=win64 ?setf at ios@@QEAAJJ at Z(ptr long) ios_setf
+@ thiscall -arch=win32 ?setf at ios@@QAEJJJ at Z(ptr long long) ios_setf_mask
+@ cdecl -arch=win64 ?setf at ios@@QEAAJJJ at Z(ptr long long) ios_setf_mask
 @ thiscall -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z(ptr ptr ptr ptr) streambuf_setg
 @ cdecl -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z(ptr ptr ptr ptr) streambuf_setg
-@ stub -arch=win32 ?setlock at ios@@QAAXXZ  # void __cdecl ios::setlock(void)
-@ stub -arch=win64 ?setlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?setlock at ios@@QAAXXZ(ptr) ios_setlock
+@ cdecl -arch=win64 ?setlock at ios@@QEAAXXZ(ptr) ios_setlock
 @ thiscall -arch=win32 ?setlock at streambuf@@QAEXXZ(ptr) streambuf_setlock
 @ cdecl -arch=win64 ?setlock at streambuf@@QEAAXXZ(ptr) streambuf_setlock
 @ stub -arch=win32 ?setmode at filebuf@@QAEHH at Z  # int __thiscall filebuf::setmode(int)
@@ -731,16 +731,16 @@
 @ cdecl -arch=win64 ?sync at streambuf@@UEAAHXZ(ptr) streambuf_sync
 @ stub -arch=win32 ?sync at strstreambuf@@UAEHXZ  # virtual int __thiscall strstreambuf::sync(void)
 @ stub -arch=win64 ?sync at strstreambuf@@UEAAHXZ
-@ stub ?sync_with_stdio at ios@@SAXXZ  # static void __cdecl ios::sync_with_stdio(void)
+@ cdecl ?sync_with_stdio at ios@@SAXXZ() ios_sync_with_stdio
 @ stub -arch=win32 ?tellg at istream@@QAEJXZ  # long __thiscall istream::tellg(void)
 @ stub -arch=win64 ?tellg at istream@@QEAAJXZ
 @ stub -arch=win32 ?tellp at ostream@@QAEJXZ  # long __thiscall ostream::tellp(void)
 @ stub -arch=win64 ?tellp at ostream@@QEAAJXZ
 # @ extern ?text at filebuf@@2HB  # static int const filebuf::text
-@ stub -arch=win32 ?tie at ios@@QAEPAVostream@@PAV2@@Z  # class ostream * __thiscall ios::tie(class ostream *)
-@ stub -arch=win64 ?tie at ios@@QEAAPEAVostream@@PEAV2@@Z
-@ stub -arch=win32 ?tie at ios@@QBEPAVostream@@XZ  # class ostream * __thiscall ios::tie(void)const 
-@ stub -arch=win64 ?tie at ios@@QEBAPEAVostream@@XZ
+@ thiscall -arch=win32 ?tie at ios@@QAEPAVostream@@PAV2@@Z(ptr ptr) ios_tie_set
+@ cdecl -arch=win64 ?tie at ios@@QEAAPEAVostream@@PEAV2@@Z(ptr ptr) ios_tie_set
+@ thiscall -arch=win32 ?tie at ios@@QBEPAVostream@@XZ(ptr) ios_tie_get
+@ cdecl -arch=win64 ?tie at ios@@QEBAPEAVostream@@XZ(ptr) ios_tie_get
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IAEXH at Z(ptr long) streambuf_unbuffered_set
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEAAXH at Z(ptr long) streambuf_unbuffered_set
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IBEHXZ(ptr) streambuf_unbuffered_get
@@ -751,21 +751,21 @@
 @ stub -arch=win64 ?underflow at stdiobuf@@UEAAHXZ
 @ stub -arch=win32 ?underflow at strstreambuf@@UAEHXZ  # virtual int __thiscall strstreambuf::underflow(void)
 @ stub -arch=win64 ?underflow at strstreambuf@@UEAAHXZ
-@ stub -arch=win32 ?unlock at ios@@QAAXXZ  # void __cdecl ios::unlock(void)
-@ stub -arch=win64 ?unlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?unlock at ios@@QAAXXZ(ptr) ios_unlock
+@ cdecl -arch=win64 ?unlock at ios@@QEAAXXZ(ptr) ios_unlock
 @ thiscall -arch=win32 ?unlock at streambuf@@QAEXXZ(ptr) streambuf_unlock
 @ cdecl -arch=win64 ?unlock at streambuf@@QEAAXXZ(ptr) streambuf_unlock
-@ stub -arch=win32 ?unlockbuf at ios@@QAAXXZ  # void __cdecl ios::unlockbuf(void)
-@ stub -arch=win64 ?unlockbuf at ios@@QEAAXXZ
-@ stub ?unlockc at ios@@KAXXZ  # static void __cdecl ios::unlockc(void)
-@ stub -arch=win32 ?unsetf at ios@@QAEJJ at Z  # long __thiscall ios::unsetf(long)
-@ stub -arch=win64 ?unsetf at ios@@QEAAJJ at Z
+@ cdecl -arch=win32 ?unlockbuf at ios@@QAAXXZ(ptr) ios_unlockbuf
+@ cdecl -arch=win64 ?unlockbuf at ios@@QEAAXXZ(ptr) ios_unlockbuf
+@ cdecl ?unlockc at ios@@KAXXZ() ios_unlockc
+@ thiscall -arch=win32 ?unsetf at ios@@QAEJJ at Z(ptr long) ios_unsetf
+@ cdecl -arch=win64 ?unsetf at ios@@QEAAJJ at Z(ptr long) ios_unsetf
 @ thiscall -arch=i386 ?what at exception@@UBEPBDXZ(ptr) MSVCP_exception_what
 @ cdecl -arch=win64 ?what at exception@@UEBAPEBDXZ(ptr) MSVCP_exception_what
-@ stub -arch=win32 ?width at ios@@QAEHH at Z  # int __thiscall ios::width(int)
-@ stub -arch=win64 ?width at ios@@QEAAHH at Z
-@ stub -arch=win32 ?width at ios@@QBEHXZ  # int __thiscall ios::width(void)const 
-@ stub -arch=win64 ?width at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?width at ios@@QAEHH at Z(ptr long) ios_width_set
+@ cdecl -arch=win64 ?width at ios@@QEAAHH at Z(ptr long) ios_width_set
+@ thiscall -arch=win32 ?width at ios@@QBEHXZ(ptr) ios_width_get
+@ cdecl -arch=win64 ?width at ios@@QEBAHXZ(ptr) ios_width_get
 @ stub -arch=win32 ?write at ostream@@QAEAAV1 at PBCH@Z  # class ostream & __thiscall ostream::write(signed char const *,int)
 @ stub -arch=win64 ?write at ostream@@QEAAAEAV1 at PEBCH@Z
 @ stub -arch=win32 ?write at ostream@@QAEAAV1 at PBDH@Z  # class ostream & __thiscall ostream::write(char const *,int)
@@ -780,7 +780,7 @@
 # @ extern ?x_lockc at ios@@0U_CRT_CRITICAL_SECTION@@A  # static struct _CRT_CRITICAL_SECTION ios::x_lockc
 # @ extern ?x_maxbit at ios@@0JA  # static long ios::x_maxbit
 # @ extern ?x_statebuf at ios@@0PAJA  # static long * ios::x_statebuf
-@ stub ?xalloc at ios@@SAHXZ  # static int __cdecl ios::xalloc(void)
+@ cdecl ?xalloc at ios@@SAHXZ() ios_xalloc
 @ thiscall -arch=win32 ?xsgetn at streambuf@@UAEHPADH at Z(ptr ptr long) streambuf_xsgetn
 @ cdecl -arch=win64 ?xsgetn at streambuf@@UEAAHPEADH at Z(ptr ptr long) streambuf_xsgetn
 @ thiscall -arch=win32 ?xsputn at streambuf@@UAEHPBDH at Z(ptr ptr long) streambuf_xsputn
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index fe1d80c..13b965c 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -30,12 +30,12 @@
 @ stub -arch=win64 ??0ifstream@@QEAA at PEBDHH@Z
 @ stub -arch=win32 ??0ifstream@@QAE at XZ
 @ stub -arch=win64 ??0ifstream@@QEAA at XZ
-@ stub -arch=win32 ??0ios@@IAE at ABV0@@Z
-@ stub -arch=win64 ??0ios@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0ios@@IAE at XZ
-@ stub -arch=win64 ??0ios@@IEAA at XZ
-@ stub -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z
-@ stub -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0ios@@IAE at ABV0@@Z(ptr ptr) msvcirt.??0ios@@IAE at ABV0@@Z
+@ cdecl -arch=win64 ??0ios@@IEAA at AEBV0@@Z(ptr ptr) msvcirt.??0ios@@IEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0ios@@IAE at XZ(ptr) msvcirt.??0ios@@IAE at XZ
+@ cdecl -arch=win64 ??0ios@@IEAA at XZ(ptr) msvcirt.??0ios@@IEAA at XZ
+@ thiscall -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QAE at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QEAA at PEAVstreambuf@@@Z
 @ stub -arch=win32 ??0iostream@@IAE at ABV0@@Z
 @ stub -arch=win64 ??0iostream@@IEAA at AEBV0@@Z
 @ stub -arch=win32 ??0iostream@@IAE at XZ
@@ -166,8 +166,8 @@
 @ stub -arch=win64 ??4fstream@@QEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4ifstream@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4ifstream@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4ios@@IAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4ios@@IEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
@@ -282,14 +282,14 @@
 @ stub -arch=win64 ??6ostream@@QEAAAEAV0 at PEBE@Z
 @ stub -arch=win32 ??6ostream@@QAEAAV0 at PBX@Z
 @ stub -arch=win64 ??6ostream@@QEAAAEAV0 at PEBX@Z
-@ stub -arch=win32 ??7ios@@QBEHXZ
-@ stub -arch=win64 ??7ios@@QEBAHXZ
-@ stub -arch=win32 ??Bios@@QBEPAXXZ
-@ stub -arch=win64 ??Bios@@QEBAPEAXXZ
+@ thiscall -arch=win32 ??7ios@@QBEHXZ(ptr) msvcirt.??7ios@@QBEHXZ
+@ cdecl -arch=win64 ??7ios@@QEBAHXZ(ptr) msvcirt.??7ios@@QEBAHXZ
+@ thiscall -arch=win32 ??Bios@@QBEPAXXZ(ptr) msvcirt.??Bios@@QBEPAXXZ
+@ cdecl -arch=win64 ??Bios@@QEBAPEAXXZ(ptr) msvcirt.??Bios@@QEBAPEAXXZ
 # @ extern ??_7filebuf@@6B@
 # @ extern ??_7fstream@@6B@
 # @ extern ??_7ifstream@@6B@
-# @ extern ??_7ios@@6B@
+@ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
 # @ extern ??_7iostream@@6B@
 # @ extern ??_7istream@@6B@
 # @ extern ??_7istream_withassign@@6B@
@@ -347,7 +347,7 @@
 @ stub -arch=win32 ??_Efilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Eios@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) msvcirt.??_Eios@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eiostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z
@@ -365,7 +365,7 @@
 @ stub -arch=win32 ??_Gfilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gios@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) msvcirt.??_Gios@@UAEPAXI at Z
 @ stub -arch=win32 ??_Giostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z
@@ -398,19 +398,19 @@
 @ stub -arch=win64 ?attach at ifstream@@QEAAXH at Z
 @ stub -arch=win32 ?attach at ofstream@@QAEXH at Z
 @ stub -arch=win64 ?attach at ofstream@@QEAAXH at Z
-@ stub -arch=win32 ?bad at ios@@QBEHXZ
-@ stub -arch=win64 ?bad at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?bad at ios@@QBEHXZ(ptr) msvcirt.?bad at ios@@QBEHXZ
+@ cdecl -arch=win64 ?bad at ios@@QEBAHXZ(ptr) msvcirt.?bad at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?base at streambuf@@IBEPADXZ(ptr) msvcirt.?base at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?base at streambuf@@IEBAPEADXZ(ptr) msvcirt.?base at streambuf@@IEBAPEADXZ
 # @ extern ?basefield at ios@@2JB
 # @ extern ?binary at filebuf@@2HB
-@ stub ?bitalloc at ios@@SAJXZ
+@ cdecl ?bitalloc at ios@@SAJXZ() msvcirt.?bitalloc at ios@@SAJXZ
 @ thiscall -arch=win32 ?blen at streambuf@@IBEHXZ(ptr) msvcirt.?blen at streambuf@@IBEHXZ
 @ cdecl -arch=win64 ?blen at streambuf@@IEBAHXZ(ptr) msvcirt.?blen at streambuf@@IEBAHXZ
 @ stub ?cerr@@3Vostream_withassign@@A
 @ stub ?cin@@3Vistream_withassign@@A
-@ stub -arch=win32 ?clear at ios@@QAEXH at Z
-@ stub -arch=win64 ?clear at ios@@QEAAXH at Z
+@ thiscall -arch=win32 ?clear at ios@@QAEXH at Z(ptr long) msvcirt.?clear at ios@@QAEXH at Z
+@ cdecl -arch=win64 ?clear at ios@@QEAAXH at Z(ptr long) msvcirt.?clear at ios@@QEAAXH at Z
 @ stub ?clog@@3Vostream_withassign@@A
 @ stub -arch=win32 ?close at filebuf@@QAEPAV1 at XZ
 @ stub -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ
@@ -420,19 +420,19 @@
 @ stub -arch=win64 ?close at ifstream@@QEAAXXZ
 @ stub -arch=win32 ?close at ofstream@@QAEXXZ
 @ stub -arch=win64 ?close at ofstream@@QEAAXXZ
-@ stub -arch=win32 ?clrlock at ios@@QAAXXZ
-@ stub -arch=win64 ?clrlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?clrlock at ios@@QAAXXZ(ptr) msvcirt.?clrlock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?clrlock at ios@@QEAAXXZ(ptr) msvcirt.?clrlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?clrlock at streambuf@@QAEXXZ(ptr) msvcirt.?clrlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?clrlock at streambuf@@QEAAXXZ(ptr) msvcirt.?clrlock at streambuf@@QEAAXXZ
 @ stub ?cout@@3Vostream_withassign@@A
 @ thiscall -arch=win32 ?dbp at streambuf@@QAEXXZ(ptr) msvcirt.?dbp at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?dbp at streambuf@@QEAAXXZ(ptr) msvcirt.?dbp at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?dec@@YAAAVios@@AAV1@@Z
-@ stub -arch=win64 ?dec@@YAAEAVios@@AEAV1@@Z
-@ stub -arch=win32 ?delbuf at ios@@QAEXH at Z
-@ stub -arch=win64 ?delbuf at ios@@QEAAXH at Z
-@ stub -arch=win32 ?delbuf at ios@@QBEHXZ
-@ stub -arch=win64 ?delbuf at ios@@QEBAHXZ
+@ cdecl -arch=win32 ?dec@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?dec@@YAAAVios@@AAV1@@Z
+@ cdecl -arch=win64 ?dec@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?dec@@YAAEAVios@@AEAV1@@Z
+@ thiscall -arch=win32 ?delbuf at ios@@QAEXH at Z(ptr long) msvcirt.?delbuf at ios@@QAEXH at Z
+@ cdecl -arch=win64 ?delbuf at ios@@QEAAXH at Z(ptr long) msvcirt.?delbuf at ios@@QEAAXH at Z
+@ thiscall -arch=win32 ?delbuf at ios@@QBEHXZ(ptr) msvcirt.?delbuf at ios@@QBEHXZ
+@ cdecl -arch=win64 ?delbuf at ios@@QEBAHXZ(ptr) msvcirt.?delbuf at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?doallocate at streambuf@@MAEHXZ(ptr) msvcirt.?doallocate at streambuf@@MAEHXZ
 @ cdecl -arch=win64 ?doallocate at streambuf@@MEAAHXZ(ptr) msvcirt.?doallocate at streambuf@@MEAAHXZ
 @ stub -arch=win32 ?doallocate at strstreambuf@@MAEHXZ
@@ -449,13 +449,13 @@
 @ cdecl -arch=win64 ?endl@@YAAEAVostream@@AEAV1@@Z(ptr) msvcirt.?endl@@YAAEAVostream@@AEAV1@@Z
 @ cdecl -arch=win32 ?ends@@YAAAVostream@@AAV1@@Z(ptr) msvcirt.?ends@@YAAAVostream@@AAV1@@Z
 @ cdecl -arch=win64 ?ends@@YAAEAVostream@@AEAV1@@Z(ptr) msvcirt.?ends@@YAAEAVostream@@AEAV1@@Z
-@ stub -arch=win32 ?eof at ios@@QBEHXZ
-@ stub -arch=win64 ?eof at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?eof at ios@@QBEHXZ(ptr) msvcirt.?eof at ios@@QBEHXZ
+@ cdecl -arch=win64 ?eof at ios@@QEBAHXZ(ptr) msvcirt.?eof at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?epptr at streambuf@@IBEPADXZ(ptr) msvcirt.?epptr at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?epptr at streambuf@@IEBAPEADXZ(ptr) msvcirt.?epptr at streambuf@@IEBAPEADXZ
 # @ extern ?fLockcInit at ios@@0HA
-@ stub -arch=win32 ?fail at ios@@QBEHXZ
-@ stub -arch=win64 ?fail at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?fail at ios@@QBEHXZ(ptr) msvcirt.?fail at ios@@QBEHXZ
+@ cdecl -arch=win64 ?fail at ios@@QEBAHXZ(ptr) msvcirt.?fail at ios@@QEBAHXZ
 @ stub -arch=win32 ?fd at filebuf@@QBEHXZ
 @ stub -arch=win64 ?fd at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?fd at fstream@@QBEHXZ
@@ -464,14 +464,14 @@
 @ stub -arch=win64 ?fd at ifstream@@QEBAHXZ
 @ stub -arch=win32 ?fd at ofstream@@QBEHXZ
 @ stub -arch=win64 ?fd at ofstream@@QEBAHXZ
-@ stub -arch=win32 ?fill at ios@@QAEDD at Z
-@ stub -arch=win64 ?fill at ios@@QEAADD at Z
-@ stub -arch=win32 ?fill at ios@@QBEDXZ
-@ stub -arch=win64 ?fill at ios@@QEBADXZ
-@ stub -arch=win32 ?flags at ios@@QAEJJ at Z
-@ stub -arch=win64 ?flags at ios@@QEAAJJ at Z
-@ stub -arch=win32 ?flags at ios@@QBEJXZ
-@ stub -arch=win64 ?flags at ios@@QEBAJXZ
+@ thiscall -arch=win32 ?fill at ios@@QAEDD at Z(ptr long) msvcirt.?fill at ios@@QAEDD at Z
+@ cdecl -arch=win64 ?fill at ios@@QEAADD at Z(ptr long) msvcirt.?fill at ios@@QEAADD at Z
+@ thiscall -arch=win32 ?fill at ios@@QBEDXZ(ptr) msvcirt.?fill at ios@@QBEDXZ
+@ cdecl -arch=win64 ?fill at ios@@QEBADXZ(ptr) msvcirt.?fill at ios@@QEBADXZ
+@ thiscall -arch=win32 ?flags at ios@@QAEJJ at Z(ptr long) msvcirt.?flags at ios@@QAEJJ at Z
+@ cdecl -arch=win64 ?flags at ios@@QEAAJJ at Z(ptr long) msvcirt.?flags at ios@@QEAAJJ at Z
+@ thiscall -arch=win32 ?flags at ios@@QBEJXZ(ptr) msvcirt.?flags at ios@@QBEJXZ
+@ cdecl -arch=win64 ?flags at ios@@QEBAJXZ(ptr) msvcirt.?flags at ios@@QEBAJXZ
 # @ extern ?floatfield at ios@@2JB
 @ stub -arch=win32 ?flush@@YAAAVostream@@AAV1@@Z
 @ stub -arch=win64 ?flush@@YAAEAVostream@@AEAV1@@Z
@@ -509,18 +509,18 @@
 @ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEADHD@Z
 @ stub -arch=win32 ?getline at istream@@QAEAAV1 at PAEHD@Z
 @ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEAEHD@Z
-@ stub -arch=win32 ?good at ios@@QBEHXZ
-@ stub -arch=win64 ?good at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?good at ios@@QBEHXZ(ptr) msvcirt.?good at ios@@QBEHXZ
+@ cdecl -arch=win64 ?good at ios@@QEBAHXZ(ptr) msvcirt.?good at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?gptr at streambuf@@IBEPADXZ(ptr) msvcirt.?gptr at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?gptr at streambuf@@IEBAPEADXZ(ptr) msvcirt.?gptr at streambuf@@IEBAPEADXZ
-@ stub -arch=win32 ?hex@@YAAAVios@@AAV1@@Z
-@ stub -arch=win64 ?hex@@YAAEAVios@@AEAV1@@Z
+@ cdecl -arch=win32 ?hex@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?hex@@YAAAVios@@AAV1@@Z
+@ cdecl -arch=win64 ?hex@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?hex@@YAAEAVios@@AEAV1@@Z
 @ stub -arch=win32 ?ignore at istream@@QAEAAV1 at HH@Z
 @ stub -arch=win64 ?ignore at istream@@QEAAAEAV1 at HH@Z
 @ thiscall -arch=win32 ?in_avail at streambuf@@QBEHXZ(ptr) msvcirt.?in_avail at streambuf@@QBEHXZ
 @ cdecl -arch=win64 ?in_avail at streambuf@@QEBAHXZ(ptr) msvcirt.?in_avail at streambuf@@QEBAHXZ
-@ stub -arch=win32 ?init at ios@@IAEXPAVstreambuf@@@Z
-@ stub -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z
+@ thiscall -arch=win32 ?init at ios@@IAEXPAVstreambuf@@@Z(ptr ptr) msvcirt.?init at ios@@IAEXPAVstreambuf@@@Z
+@ cdecl -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z(ptr ptr) msvcirt.?init at ios@@IEAAXPEAVstreambuf@@@Z
 @ stub -arch=win32 ?ipfx at istream@@QAEHH at Z
 @ stub -arch=win64 ?ipfx at istream@@QEAAHH at Z
 @ stub -arch=win32 ?is_open at filebuf@@QBEHXZ
@@ -533,21 +533,21 @@
 @ stub -arch=win64 ?is_open at ofstream@@QEBAHXZ
 @ stub -arch=win32 ?isfx at istream@@QAEXXZ
 @ stub -arch=win64 ?isfx at istream@@QEAAXXZ
-@ stub -arch=win32 ?iword at ios@@QBEAAJH at Z
-@ stub -arch=win64 ?iword at ios@@QEBAAEAJH at Z
-@ stub -arch=win32 ?lock at ios@@QAAXXZ
-@ stub -arch=win64 ?lock at ios@@QEAAXXZ
+@ thiscall -arch=win32 ?iword at ios@@QBEAAJH at Z(ptr long) msvcirt.?iword at ios@@QBEAAJH at Z
+@ cdecl -arch=win64 ?iword at ios@@QEBAAEAJH at Z(ptr long) msvcirt.?iword at ios@@QEBAAEAJH at Z
+@ cdecl -arch=win32 ?lock at ios@@QAAXXZ(ptr) msvcirt.?lock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?lock at ios@@QEAAXXZ(ptr) msvcirt.?lock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?lock at streambuf@@QAEXXZ(ptr) msvcirt.?lock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?lock at streambuf@@QEAAXXZ(ptr) msvcirt.?lock at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?lockbuf at ios@@QAAXXZ
-@ stub -arch=win64 ?lockbuf at ios@@QEAAXXZ
-@ stub ?lockc at ios@@KAXXZ
-@ stub -arch=win32 ?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
-@ stub -arch=win64 ?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
+@ cdecl -arch=win32 ?lockbuf at ios@@QAAXXZ(ptr) msvcirt.?lockbuf at ios@@QAAXXZ
+@ cdecl -arch=win64 ?lockbuf at ios@@QEAAXXZ(ptr) msvcirt.?lockbuf at ios@@QEAAXXZ
+@ cdecl ?lockc at ios@@KAXXZ() msvcirt.?lockc at ios@@KAXXZ
+@ thiscall -arch=win32 ?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
+@ cdecl -arch=win64 ?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
 @ thiscall -arch=win32 ?lockptr at streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
 @ cdecl -arch=win64 ?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
-@ stub -arch=win32 ?oct@@YAAAVios@@AAV1@@Z
-@ stub -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z
+@ cdecl -arch=win32 ?oct@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?oct@@YAAAVios@@AAV1@@Z
+@ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?oct@@YAAEAVios@@AEAV1@@Z
 @ stub -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z
 @ stub -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
 @ stub -arch=win32 ?open at fstream@@QAEXPBDHH at Z
@@ -585,10 +585,10 @@
 @ stub -arch=win64 ?peek at istream@@QEAAHXZ
 @ thiscall -arch=win32 ?pptr at streambuf@@IBEPADXZ(ptr) msvcirt.?pptr at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?pptr at streambuf@@IEBAPEADXZ(ptr) msvcirt.?pptr at streambuf@@IEBAPEADXZ
-@ stub -arch=win32 ?precision at ios@@QAEHH at Z
-@ stub -arch=win64 ?precision at ios@@QEAAHH at Z
-@ stub -arch=win32 ?precision at ios@@QBEHXZ
-@ stub -arch=win64 ?precision at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?precision at ios@@QAEHH at Z(ptr long) msvcirt.?precision at ios@@QAEHH at Z
+@ cdecl -arch=win64 ?precision at ios@@QEAAHH at Z(ptr long) msvcirt.?precision at ios@@QEAAHH at Z
+@ thiscall -arch=win32 ?precision at ios@@QBEHXZ(ptr) msvcirt.?precision at ios@@QBEHXZ
+@ cdecl -arch=win64 ?precision at ios@@QEBAHXZ(ptr) msvcirt.?precision at ios@@QEBAHXZ
 @ stub -arch=win32 ?put at ostream@@QAEAAV1 at C@Z
 @ stub -arch=win64 ?put at ostream@@QEAAAEAV1 at C@Z
 @ stub -arch=win32 ?put at ostream@@QAEAAV1 at D@Z
@@ -597,14 +597,14 @@
 @ stub -arch=win64 ?put at ostream@@QEAAAEAV1 at E@Z
 @ stub -arch=win32 ?putback at istream@@QAEAAV1 at D@Z
 @ stub -arch=win64 ?putback at istream@@QEAAAEAV1 at D@Z
-@ stub -arch=win32 ?pword at ios@@QBEAAPAXH at Z
-@ stub -arch=win64 ?pword at ios@@QEBAAEAPEAXH at Z
+@ thiscall -arch=win32 ?pword at ios@@QBEAAPAXH at Z(ptr long) msvcirt.?pword at ios@@QBEAAPAXH at Z
+@ cdecl -arch=win64 ?pword at ios@@QEBAAEAPEAXH at Z(ptr long) msvcirt.?pword at ios@@QEBAAEAPEAXH at Z
 @ stub -arch=win32 ?rdbuf at fstream@@QBEPAVfilebuf@@XZ
 @ stub -arch=win64 ?rdbuf at fstream@@QEBAPEAVfilebuf@@XZ
 @ stub -arch=win32 ?rdbuf at ifstream@@QBEPAVfilebuf@@XZ
 @ stub -arch=win64 ?rdbuf at ifstream@@QEBAPEAVfilebuf@@XZ
-@ stub -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ
-@ stub -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QBEPAVstreambuf@@XZ
+@ cdecl -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QEBAPEAVstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ
 @ stub -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at ofstream@@QBEPAVfilebuf@@XZ
@@ -615,8 +615,8 @@
 @ stub -arch=win64 ?rdbuf at stdiostream@@QEBAPEAVstdiobuf@@XZ
 @ stub -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ
 @ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
-@ stub -arch=win32 ?rdstate at ios@@QBEHXZ
-@ stub -arch=win64 ?rdstate at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?rdstate at ios@@QBEHXZ(ptr) msvcirt.?rdstate at ios@@QBEHXZ
+@ cdecl -arch=win64 ?rdstate at ios@@QEBAHXZ(ptr) msvcirt.?rdstate at ios@@QEBAHXZ
 @ stub -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z
 @ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEACH@Z
 @ stub -arch=win32 ?read at istream@@QAEAAV1 at PADH@Z
@@ -659,14 +659,14 @@
 @ cdecl -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z(ptr ptr long) msvcirt.?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z
 @ stub -arch=win32 ?setbuf at strstreambuf@@UAEPAVstreambuf@@PADH at Z
 @ stub -arch=win64 ?setbuf at strstreambuf@@UEAAPEAVstreambuf@@PEADH at Z
-@ stub -arch=win32 ?setf at ios@@QAEJJ at Z
-@ stub -arch=win64 ?setf at ios@@QEAAJJ at Z
-@ stub -arch=win32 ?setf at ios@@QAEJJJ at Z
-@ stub -arch=win64 ?setf at ios@@QEAAJJJ at Z
+@ thiscall -arch=win32 ?setf at ios@@QAEJJ at Z(ptr long) msvcirt.?setf at ios@@QAEJJ at Z
+@ cdecl -arch=win64 ?setf at ios@@QEAAJJ at Z(ptr long) msvcirt.?setf at ios@@QEAAJJ at Z
+@ thiscall -arch=win32 ?setf at ios@@QAEJJJ at Z(ptr long long) msvcirt.?setf at ios@@QAEJJJ at Z
+@ cdecl -arch=win64 ?setf at ios@@QEAAJJJ at Z(ptr long long) msvcirt.?setf at ios@@QEAAJJJ at Z
 @ thiscall -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IAEXPAD00 at Z
 @ cdecl -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IEAAXPEAD00 at Z
-@ stub -arch=win32 ?setlock at ios@@QAAXXZ
-@ stub -arch=win64 ?setlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?setlock at ios@@QAAXXZ(ptr) msvcirt.?setlock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?setlock at ios@@QEAAXXZ(ptr) msvcirt.?setlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?setlock at streambuf@@QAEXXZ(ptr) msvcirt.?setlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?setlock at streambuf@@QEAAXXZ(ptr) msvcirt.?setlock at streambuf@@QEAAXXZ
 @ stub -arch=win32 ?setmode at filebuf@@QAEHH at Z
@@ -719,17 +719,17 @@
 @ cdecl -arch=win64 ?sync at streambuf@@UEAAHXZ(ptr) msvcirt.?sync at streambuf@@UEAAHXZ
 @ stub -arch=win32 ?sync at strstreambuf@@UAEHXZ
 @ stub -arch=win64 ?sync at strstreambuf@@UEAAHXZ
-@ stub ?sync_with_stdio at ios@@SAXXZ
+@ cdecl ?sync_with_stdio at ios@@SAXXZ() msvcirt.?sync_with_stdio at ios@@SAXXZ
 @ stub -arch=win32 ?tellg at istream@@QAEJXZ
 @ stub -arch=win64 ?tellg at istream@@QEAAJXZ
 @ stub -arch=win32 ?tellp at ostream@@QAEJXZ
 @ stub -arch=win64 ?tellp at ostream@@QEAAJXZ
 @ cdecl ?terminate@@YAXXZ() msvcrt.?terminate@@YAXXZ
 # @ extern ?text at filebuf@@2HB
-@ stub -arch=win32 ?tie at ios@@QAEPAVostream@@PAV2@@Z
-@ stub -arch=win64 ?tie at ios@@QEAAPEAVostream@@PEAV2@@Z
-@ stub -arch=win32 ?tie at ios@@QBEPAVostream@@XZ
-@ stub -arch=win64 ?tie at ios@@QEBAPEAVostream@@XZ
+@ thiscall -arch=win32 ?tie at ios@@QAEPAVostream@@PAV2@@Z(ptr ptr) msvcirt.?tie at ios@@QAEPAVostream@@PAV2@@Z
+@ cdecl -arch=win64 ?tie at ios@@QEAAPEAVostream@@PEAV2@@Z(ptr ptr) msvcirt.?tie at ios@@QEAAPEAVostream@@PEAV2@@Z
+@ thiscall -arch=win32 ?tie at ios@@QBEPAVostream@@XZ(ptr) msvcirt.?tie at ios@@QBEPAVostream@@XZ
+@ cdecl -arch=win64 ?tie at ios@@QEBAPEAVostream@@XZ(ptr) msvcirt.?tie at ios@@QEBAPEAVostream@@XZ
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IAEXH at Z(ptr long) msvcirt.?unbuffered at streambuf@@IAEXH at Z
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEAAXH at Z(ptr long) msvcirt.?unbuffered at streambuf@@IEAAXH at Z
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IBEHXZ(ptr) msvcirt.?unbuffered at streambuf@@IBEHXZ
@@ -741,19 +741,19 @@
 @ stub -arch=win32 ?underflow at strstreambuf@@UAEHXZ
 @ stub -arch=win64 ?underflow at strstreambuf@@UEAAHXZ
 @ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
-@ stub -arch=win32 ?unlock at ios@@QAAXXZ
-@ stub -arch=win64 ?unlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?unlock at ios@@QAAXXZ(ptr) msvcirt.?unlock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?unlock at ios@@QEAAXXZ(ptr) msvcirt.?unlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?unlock at streambuf@@QAEXXZ(ptr) msvcirt.?unlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?unlock at streambuf@@QEAAXXZ(ptr) msvcirt.?unlock at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?unlockbuf at ios@@QAAXXZ
-@ stub -arch=win64 ?unlockbuf at ios@@QEAAXXZ
-@ stub ?unlockc at ios@@KAXXZ
-@ stub -arch=win32 ?unsetf at ios@@QAEJJ at Z
-@ stub -arch=win64 ?unsetf at ios@@QEAAJJ at Z
-@ stub -arch=win32 ?width at ios@@QAEHH at Z
-@ stub -arch=win64 ?width at ios@@QEAAHH at Z
-@ stub -arch=win32 ?width at ios@@QBEHXZ
-@ stub -arch=win64 ?width at ios@@QEBAHXZ
+@ cdecl -arch=win32 ?unlockbuf at ios@@QAAXXZ(ptr) msvcirt.?unlockbuf at ios@@QAAXXZ
+@ cdecl -arch=win64 ?unlockbuf at ios@@QEAAXXZ(ptr) msvcirt.?unlockbuf at ios@@QEAAXXZ
+@ cdecl ?unlockc at ios@@KAXXZ() msvcirt.?unlockc at ios@@KAXXZ
+@ thiscall -arch=win32 ?unsetf at ios@@QAEJJ at Z(ptr long) msvcirt.?unsetf at ios@@QAEJJ at Z
+@ cdecl -arch=win64 ?unsetf at ios@@QEAAJJ at Z(ptr long) msvcirt.?unsetf at ios@@QEAAJJ at Z
+@ thiscall -arch=win32 ?width at ios@@QAEHH at Z(ptr long) msvcirt.?width at ios@@QAEHH at Z
+@ cdecl -arch=win64 ?width at ios@@QEAAHH at Z(ptr long) msvcirt.?width at ios@@QEAAHH at Z
+@ thiscall -arch=win32 ?width at ios@@QBEHXZ(ptr) msvcirt.?width at ios@@QBEHXZ
+@ cdecl -arch=win64 ?width at ios@@QEBAHXZ(ptr) msvcirt.?width at ios@@QEBAHXZ
 @ stub -arch=win32 ?write at ostream@@QAEAAV1 at PBCH@Z
 @ stub -arch=win64 ?write at ostream@@QEAAAEAV1 at PEBCH@Z
 @ stub -arch=win32 ?write at ostream@@QAEAAV1 at PBDH@Z
@@ -768,7 +768,7 @@
 # @ extern ?x_lockc at ios@@0U_RTL_CRITICAL_SECTION@@A
 # @ extern ?x_maxbit at ios@@0JA
 # @ extern ?x_statebuf at ios@@0QAJA
-@ stub ?xalloc at ios@@SAHXZ
+@ cdecl ?xalloc at ios@@SAHXZ() msvcirt.?xalloc at ios@@SAHXZ
 @ thiscall -arch=win32 ?xsgetn at streambuf@@UAEHPADH at Z(ptr ptr long) msvcirt.?xsgetn at streambuf@@UAEHPADH at Z
 @ cdecl -arch=win64 ?xsgetn at streambuf@@UEAAHPEADH at Z(ptr ptr long) msvcirt.?xsgetn at streambuf@@UEAAHPEADH at Z
 @ thiscall -arch=win32 ?xsputn at streambuf@@UAEHPBDH at Z(ptr ptr long) msvcirt.?xsputn at streambuf@@UAEHPBDH at Z
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index 6fa3078..924cd02 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -48,12 +48,12 @@
 @ stub -arch=win64 ??0ifstream@@QEAA at PEBDHH@Z
 @ stub -arch=win32 ??0ifstream@@QAE at XZ
 @ stub -arch=win64 ??0ifstream@@QEAA at XZ
-@ stub -arch=win32 ??0ios@@IAE at ABV0@@Z
-@ stub -arch=win64 ??0ios@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0ios@@IAE at XZ
-@ stub -arch=win64 ??0ios@@IEAA at XZ
-@ stub -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z
-@ stub -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0ios@@IAE at ABV0@@Z(ptr ptr) msvcirt.??0ios@@IAE at ABV0@@Z
+@ cdecl -arch=win64 ??0ios@@IEAA at AEBV0@@Z(ptr ptr) msvcirt.??0ios@@IEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0ios@@IAE at XZ(ptr) msvcirt.??0ios@@IAE at XZ
+@ cdecl -arch=win64 ??0ios@@IEAA at XZ(ptr) msvcirt.??0ios@@IEAA at XZ
+@ thiscall -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QAE at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QEAA at PEAVstreambuf@@@Z
 @ stub -arch=win32 ??0iostream@@IAE at ABV0@@Z
 @ stub -arch=win64 ??0iostream@@IEAA at AEBV0@@Z
 @ stub -arch=win32 ??0iostream@@IAE at XZ
@@ -208,8 +208,8 @@
 @ stub -arch=win64 ??4fstream@@QEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4ifstream@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4ifstream@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4ios@@IAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4ios@@IEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
@@ -326,14 +326,14 @@
 @ stub -arch=win64 ??6ostream@@QEAAAEAV0 at PEBE@Z
 @ stub -arch=win32 ??6ostream@@QAEAAV0 at PBX@Z
 @ stub -arch=win64 ??6ostream@@QEAAAEAV0 at PEBX@Z
-@ stub -arch=win32 ??7ios@@QBEHXZ
-@ stub -arch=win64 ??7ios@@QEBAHXZ
+@ thiscall -arch=win32 ??7ios@@QBEHXZ(ptr) msvcirt.??7ios@@QBEHXZ
+@ cdecl -arch=win64 ??7ios@@QEBAHXZ(ptr) msvcirt.??7ios@@QEBAHXZ
 @ thiscall -arch=i386 ??8type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??8type_info@@QBEHABV0@@Z
 @ cdecl -arch=win64 ??8type_info@@QEBAHAEBV0@@Z(ptr ptr) msvcrt.??8type_info@@QEBAHAEBV0@@Z
 @ thiscall -arch=i386 ??9type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??9type_info@@QBEHABV0@@Z
 @ cdecl -arch=win64 ??9type_info@@QEBAHAEBV0@@Z(ptr ptr) msvcrt.??9type_info@@QEBAHAEBV0@@Z
-@ stub -arch=win32 ??Bios@@QBEPAXXZ
-@ stub -arch=win64 ??Bios@@QEBAPEAXXZ
+@ thiscall -arch=win32 ??Bios@@QBEPAXXZ(ptr) msvcirt.??Bios@@QBEPAXXZ
+@ cdecl -arch=win64 ??Bios@@QEBAPEAXXZ(ptr) msvcirt.??Bios@@QEBAPEAXXZ
 @ extern ??_7__non_rtti_object@@6B@ msvcrt.??_7__non_rtti_object@@6B@
 @ extern ??_7bad_cast@@6B@ msvcrt.??_7bad_cast@@6B@
 @ extern ??_7bad_typeid@@6B@ msvcrt.??_7bad_typeid@@6B@
@@ -341,7 +341,7 @@
 # @ extern ??_7filebuf@@6B@
 # @ extern ??_7fstream@@6B@
 # @ extern ??_7ifstream@@6B@
-# @ extern ??_7ios@@6B@
+@ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
 # @ extern ??_7iostream@@6B@
 # @ extern ??_7istream@@6B@
 # @ extern ??_7istream_withassign@@6B@
@@ -404,7 +404,7 @@
 @ stub -arch=win32 ??_Efilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Eios@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) msvcirt.??_Eios@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eiostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z
@@ -427,7 +427,7 @@
 @ stub -arch=win32 ??_Gfilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gios@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) msvcirt.??_Gios@@UAEPAXI at Z
 @ stub -arch=win32 ??_Giostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z
@@ -461,21 +461,21 @@
 @ stub -arch=win64 ?attach at ifstream@@QEAAXH at Z
 @ stub -arch=win32 ?attach at ofstream@@QAEXH at Z
 @ stub -arch=win64 ?attach at ofstream@@QEAAXH at Z
-@ stub -arch=win32 ?bad at ios@@QBEHXZ
-@ stub -arch=win64 ?bad at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?bad at ios@@QBEHXZ(ptr) msvcirt.?bad at ios@@QBEHXZ
+@ cdecl -arch=win64 ?bad at ios@@QEBAHXZ(ptr) msvcirt.?bad at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?base at streambuf@@IBEPADXZ(ptr) msvcirt.?base at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?base at streambuf@@IEBAPEADXZ(ptr) msvcirt.?base at streambuf@@IEBAPEADXZ
 # @ extern ?basefield at ios@@2JB
 @ thiscall -arch=i386 ?before at type_info@@QBEHABV1@@Z(ptr ptr) msvcrt.?before at type_info@@QBEHABV1@@Z
 @ cdecl -arch=win64 ?before at type_info@@QEBAHAEBV1@@Z(ptr ptr) msvcrt.?before at type_info@@QEBAHAEBV1@@Z
 # @ extern ?binary at filebuf@@2HB
-@ stub ?bitalloc at ios@@SAJXZ
+@ cdecl ?bitalloc at ios@@SAJXZ() msvcirt.?bitalloc at ios@@SAJXZ
 @ thiscall -arch=win32 ?blen at streambuf@@IBEHXZ(ptr) msvcirt.?blen at streambuf@@IBEHXZ
 @ cdecl -arch=win64 ?blen at streambuf@@IEBAHXZ(ptr) msvcirt.?blen at streambuf@@IEBAHXZ
 @ stub ?cerr@@3Vostream_withassign@@A
 @ stub ?cin@@3Vistream_withassign@@A
-@ stub -arch=win32 ?clear at ios@@QAEXH at Z
-@ stub -arch=win64 ?clear at ios@@QEAAXH at Z
+@ thiscall -arch=win32 ?clear at ios@@QAEXH at Z(ptr long) msvcirt.?clear at ios@@QAEXH at Z
+@ cdecl -arch=win64 ?clear at ios@@QEAAXH at Z(ptr long) msvcirt.?clear at ios@@QEAAXH at Z
 @ stub ?clog@@3Vostream_withassign@@A
 @ stub -arch=win32 ?close at filebuf@@QAEPAV1 at XZ
 @ stub -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ
@@ -485,19 +485,19 @@
 @ stub -arch=win64 ?close at ifstream@@QEAAXXZ
 @ stub -arch=win32 ?close at ofstream@@QAEXXZ
 @ stub -arch=win64 ?close at ofstream@@QEAAXXZ
-@ stub -arch=win32 ?clrlock at ios@@QAAXXZ
-@ stub -arch=win64 ?clrlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?clrlock at ios@@QAAXXZ(ptr) msvcirt.?clrlock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?clrlock at ios@@QEAAXXZ(ptr) msvcirt.?clrlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?clrlock at streambuf@@QAEXXZ(ptr) msvcirt.?clrlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?clrlock at streambuf@@QEAAXXZ(ptr) msvcirt.?clrlock at streambuf@@QEAAXXZ
 @ stub ?cout@@3Vostream_withassign@@A
 @ thiscall -arch=win32 ?dbp at streambuf@@QAEXXZ(ptr) msvcirt.?dbp at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?dbp at streambuf@@QEAAXXZ(ptr) msvcirt.?dbp at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?dec@@YAAAVios@@AAV1@@Z
-@ stub -arch=win64 ?dec@@YAAEAVios@@AEAV1@@Z
-@ stub -arch=win32 ?delbuf at ios@@QAEXH at Z
-@ stub -arch=win64 ?delbuf at ios@@QEAAXH at Z
-@ stub -arch=win32 ?delbuf at ios@@QBEHXZ
-@ stub -arch=win64 ?delbuf at ios@@QEBAHXZ
+@ cdecl -arch=win32 ?dec@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?dec@@YAAAVios@@AAV1@@Z
+@ cdecl -arch=win64 ?dec@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?dec@@YAAEAVios@@AEAV1@@Z
+@ thiscall -arch=win32 ?delbuf at ios@@QAEXH at Z(ptr long) msvcirt.?delbuf at ios@@QAEXH at Z
+@ cdecl -arch=win64 ?delbuf at ios@@QEAAXH at Z(ptr long) msvcirt.?delbuf at ios@@QEAAXH at Z
+@ thiscall -arch=win32 ?delbuf at ios@@QBEHXZ(ptr) msvcirt.?delbuf at ios@@QBEHXZ
+@ cdecl -arch=win64 ?delbuf at ios@@QEBAHXZ(ptr) msvcirt.?delbuf at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?doallocate at streambuf@@MAEHXZ(ptr) msvcirt.?doallocate at streambuf@@MAEHXZ
 @ cdecl -arch=win64 ?doallocate at streambuf@@MEAAHXZ(ptr) msvcirt.?doallocate at streambuf@@MEAAHXZ
 @ stub -arch=win32 ?doallocate at strstreambuf@@MAEHXZ
@@ -514,13 +514,13 @@
 @ cdecl -arch=win64 ?endl@@YAAEAVostream@@AEAV1@@Z(ptr) msvcirt.?endl@@YAAEAVostream@@AEAV1@@Z
 @ cdecl -arch=win32 ?ends@@YAAAVostream@@AAV1@@Z(ptr) msvcirt.?ends@@YAAAVostream@@AAV1@@Z
 @ cdecl -arch=win64 ?ends@@YAAEAVostream@@AEAV1@@Z(ptr) msvcirt.?ends@@YAAEAVostream@@AEAV1@@Z
-@ stub -arch=win32 ?eof at ios@@QBEHXZ
-@ stub -arch=win64 ?eof at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?eof at ios@@QBEHXZ(ptr) msvcirt.?eof at ios@@QBEHXZ
+@ cdecl -arch=win64 ?eof at ios@@QEBAHXZ(ptr) msvcirt.?eof at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?epptr at streambuf@@IBEPADXZ(ptr) msvcirt.?epptr at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?epptr at streambuf@@IEBAPEADXZ(ptr) msvcirt.?epptr at streambuf@@IEBAPEADXZ
 # @ extern ?fLockcInit at ios@@0HA
-@ stub -arch=win32 ?fail at ios@@QBEHXZ
-@ stub -arch=win64 ?fail at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?fail at ios@@QBEHXZ(ptr) msvcirt.?fail at ios@@QBEHXZ
+@ cdecl -arch=win64 ?fail at ios@@QEBAHXZ(ptr) msvcirt.?fail at ios@@QEBAHXZ
 @ stub -arch=win32 ?fd at filebuf@@QBEHXZ
 @ stub -arch=win64 ?fd at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?fd at fstream@@QBEHXZ
@@ -529,14 +529,14 @@
 @ stub -arch=win64 ?fd at ifstream@@QEBAHXZ
 @ stub -arch=win32 ?fd at ofstream@@QBEHXZ
 @ stub -arch=win64 ?fd at ofstream@@QEBAHXZ
-@ stub -arch=win32 ?fill at ios@@QAEDD at Z
-@ stub -arch=win64 ?fill at ios@@QEAADD at Z
-@ stub -arch=win32 ?fill at ios@@QBEDXZ
-@ stub -arch=win64 ?fill at ios@@QEBADXZ
-@ stub -arch=win32 ?flags at ios@@QAEJJ at Z
-@ stub -arch=win64 ?flags at ios@@QEAAJJ at Z
-@ stub -arch=win32 ?flags at ios@@QBEJXZ
-@ stub -arch=win64 ?flags at ios@@QEBAJXZ
+@ thiscall -arch=win32 ?fill at ios@@QAEDD at Z(ptr long) msvcirt.?fill at ios@@QAEDD at Z
+@ cdecl -arch=win64 ?fill at ios@@QEAADD at Z(ptr long) msvcirt.?fill at ios@@QEAADD at Z
+@ thiscall -arch=win32 ?fill at ios@@QBEDXZ(ptr) msvcirt.?fill at ios@@QBEDXZ
+@ cdecl -arch=win64 ?fill at ios@@QEBADXZ(ptr) msvcirt.?fill at ios@@QEBADXZ
+@ thiscall -arch=win32 ?flags at ios@@QAEJJ at Z(ptr long) msvcirt.?flags at ios@@QAEJJ at Z
+@ cdecl -arch=win64 ?flags at ios@@QEAAJJ at Z(ptr long) msvcirt.?flags at ios@@QEAAJJ at Z
+@ thiscall -arch=win32 ?flags at ios@@QBEJXZ(ptr) msvcirt.?flags at ios@@QBEJXZ
+@ cdecl -arch=win64 ?flags at ios@@QEBAJXZ(ptr) msvcirt.?flags at ios@@QEBAJXZ
 # @ extern ?floatfield at ios@@2JB
 @ stub -arch=win32 ?flush@@YAAAVostream@@AAV1@@Z
 @ stub -arch=win64 ?flush@@YAAEAVostream@@AEAV1@@Z
@@ -576,18 +576,18 @@
 @ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEADHD@Z
 @ stub -arch=win32 ?getline at istream@@QAEAAV1 at PAEHD@Z
 @ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEAEHD@Z
-@ stub -arch=win32 ?good at ios@@QBEHXZ
-@ stub -arch=win64 ?good at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?good at ios@@QBEHXZ(ptr) msvcirt.?good at ios@@QBEHXZ
+@ cdecl -arch=win64 ?good at ios@@QEBAHXZ(ptr) msvcirt.?good at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?gptr at streambuf@@IBEPADXZ(ptr) msvcirt.?gptr at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?gptr at streambuf@@IEBAPEADXZ(ptr) msvcirt.?gptr at streambuf@@IEBAPEADXZ
-@ stub -arch=win32 ?hex@@YAAAVios@@AAV1@@Z
-@ stub -arch=win64 ?hex@@YAAEAVios@@AEAV1@@Z
+@ cdecl -arch=win32 ?hex@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?hex@@YAAAVios@@AAV1@@Z
+@ cdecl -arch=win64 ?hex@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?hex@@YAAEAVios@@AEAV1@@Z
 @ stub -arch=win32 ?ignore at istream@@QAEAAV1 at HH@Z
 @ stub -arch=win64 ?ignore at istream@@QEAAAEAV1 at HH@Z
 @ thiscall -arch=win32 ?in_avail at streambuf@@QBEHXZ(ptr) msvcirt.?in_avail at streambuf@@QBEHXZ
 @ cdecl -arch=win64 ?in_avail at streambuf@@QEBAHXZ(ptr) msvcirt.?in_avail at streambuf@@QEBAHXZ
-@ stub -arch=win32 ?init at ios@@IAEXPAVstreambuf@@@Z
-@ stub -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z
+@ thiscall -arch=win32 ?init at ios@@IAEXPAVstreambuf@@@Z(ptr ptr) msvcirt.?init at ios@@IAEXPAVstreambuf@@@Z
+@ cdecl -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z(ptr ptr) msvcirt.?init at ios@@IEAAXPEAVstreambuf@@@Z
 @ stub -arch=win32 ?ipfx at istream@@QAEHH at Z
 @ stub -arch=win64 ?ipfx at istream@@QEAAHH at Z
 @ stub -arch=win32 ?is_open at filebuf@@QBEHXZ
@@ -600,23 +600,23 @@
 @ stub -arch=win64 ?is_open at ofstream@@QEBAHXZ
 @ stub -arch=win32 ?isfx at istream@@QAEXXZ
 @ stub -arch=win64 ?isfx at istream@@QEAAXXZ
-@ stub -arch=win32 ?iword at ios@@QBEAAJH at Z
-@ stub -arch=win64 ?iword at ios@@QEBAAEAJH at Z
-@ stub -arch=win32 ?lock at ios@@QAAXXZ
-@ stub -arch=win64 ?lock at ios@@QEAAXXZ
+@ thiscall -arch=win32 ?iword at ios@@QBEAAJH at Z(ptr long) msvcirt.?iword at ios@@QBEAAJH at Z
+@ cdecl -arch=win64 ?iword at ios@@QEBAAEAJH at Z(ptr long) msvcirt.?iword at ios@@QEBAAEAJH at Z
+@ cdecl -arch=win32 ?lock at ios@@QAAXXZ(ptr) msvcirt.?lock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?lock at ios@@QEAAXXZ(ptr) msvcirt.?lock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?lock at streambuf@@QAEXXZ(ptr) msvcirt.?lock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?lock at streambuf@@QEAAXXZ(ptr) msvcirt.?lock at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?lockbuf at ios@@QAAXXZ
-@ stub -arch=win64 ?lockbuf at ios@@QEAAXXZ
-@ stub ?lockc at ios@@KAXXZ
-@ stub -arch=win32 ?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
-@ stub -arch=win64 ?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
+@ cdecl -arch=win32 ?lockbuf at ios@@QAAXXZ(ptr) msvcirt.?lockbuf at ios@@QAAXXZ
+@ cdecl -arch=win64 ?lockbuf at ios@@QEAAXXZ(ptr) msvcirt.?lockbuf at ios@@QEAAXXZ
+@ cdecl ?lockc at ios@@KAXXZ() msvcirt.?lockc at ios@@KAXXZ
+@ thiscall -arch=win32 ?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
+@ cdecl -arch=win64 ?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
 @ thiscall -arch=win32 ?lockptr at streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
 @ cdecl -arch=win64 ?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
 @ thiscall -arch=win32 ?name at type_info@@QBEPBDXZ(ptr) msvcrt.?name at type_info@@QBEPBDXZ
 @ cdecl -arch=win64 ?name at type_info@@QEBAPEBDXZ(ptr) msvcrt.?name at type_info@@QEBAPEBDXZ
-@ stub -arch=win32 ?oct@@YAAAVios@@AAV1@@Z
-@ stub -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z
+@ cdecl -arch=win32 ?oct@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?oct@@YAAAVios@@AAV1@@Z
+@ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?oct@@YAAEAVios@@AEAV1@@Z
 @ stub -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z
 @ stub -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
 @ stub -arch=win32 ?open at fstream@@QAEXPBDHH at Z
@@ -654,10 +654,10 @@
 @ stub -arch=win64 ?peek at istream@@QEAAHXZ
 @ thiscall -arch=win32 ?pptr at streambuf@@IBEPADXZ(ptr) msvcirt.?pptr at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?pptr at streambuf@@IEBAPEADXZ(ptr) msvcirt.?pptr at streambuf@@IEBAPEADXZ
-@ stub -arch=win32 ?precision at ios@@QAEHH at Z
-@ stub -arch=win64 ?precision at ios@@QEAAHH at Z
-@ stub -arch=win32 ?precision at ios@@QBEHXZ
-@ stub -arch=win64 ?precision at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?precision at ios@@QAEHH at Z(ptr long) msvcirt.?precision at ios@@QAEHH at Z
+@ cdecl -arch=win64 ?precision at ios@@QEAAHH at Z(ptr long) msvcirt.?precision at ios@@QEAAHH at Z
+@ thiscall -arch=win32 ?precision at ios@@QBEHXZ(ptr) msvcirt.?precision at ios@@QBEHXZ
+@ cdecl -arch=win64 ?precision at ios@@QEBAHXZ(ptr) msvcirt.?precision at ios@@QEBAHXZ
 @ stub -arch=win32 ?put at ostream@@QAEAAV1 at C@Z
 @ stub -arch=win64 ?put at ostream@@QEAAAEAV1 at C@Z
 @ stub -arch=win32 ?put at ostream@@QAEAAV1 at D@Z
@@ -666,16 +666,16 @@
 @ stub -arch=win64 ?put at ostream@@QEAAAEAV1 at E@Z
 @ stub -arch=win32 ?putback at istream@@QAEAAV1 at D@Z
 @ stub -arch=win64 ?putback at istream@@QEAAAEAV1 at D@Z
-@ stub -arch=win32 ?pword at ios@@QBEAAPAXH at Z
-@ stub -arch=win64 ?pword at ios@@QEBAAEAPEAXH at Z
+@ thiscall -arch=win32 ?pword at ios@@QBEAAPAXH at Z(ptr long) msvcirt.?pword at ios@@QBEAAPAXH at Z
+@ cdecl -arch=win64 ?pword at ios@@QEBAAEAPEAXH at Z(ptr long) msvcirt.?pword at ios@@QEBAAEAPEAXH at Z
 @ thiscall -arch=i386 ?raw_name at type_info@@QBEPBDXZ(ptr) msvcrt.?raw_name at type_info@@QBEPBDXZ
 @ cdecl -arch=win64 ?raw_name at type_info@@QEBAPEBDXZ(ptr) msvcrt.?raw_name at type_info@@QEBAPEBDXZ
 @ stub -arch=win32 ?rdbuf at fstream@@QBEPAVfilebuf@@XZ
 @ stub -arch=win64 ?rdbuf at fstream@@QEBAPEAVfilebuf@@XZ
 @ stub -arch=win32 ?rdbuf at ifstream@@QBEPAVfilebuf@@XZ
 @ stub -arch=win64 ?rdbuf at ifstream@@QEBAPEAVfilebuf@@XZ
-@ stub -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ
-@ stub -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QBEPAVstreambuf@@XZ
+@ cdecl -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QEBAPEAVstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ
 @ stub -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at ofstream@@QBEPAVfilebuf@@XZ
@@ -686,8 +686,8 @@
 @ stub -arch=win64 ?rdbuf at stdiostream@@QEBAPEAVstdiobuf@@XZ
 @ stub -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ
 @ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
-@ stub -arch=win32 ?rdstate at ios@@QBEHXZ
-@ stub -arch=win64 ?rdstate at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?rdstate at ios@@QBEHXZ(ptr) msvcirt.?rdstate at ios@@QBEHXZ
+@ cdecl -arch=win64 ?rdstate at ios@@QEBAHXZ(ptr) msvcirt.?rdstate at ios@@QEBAHXZ
 @ stub -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z
 @ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEACH@Z
 @ stub -arch=win32 ?read at istream@@QAEAAV1 at PADH@Z
@@ -731,14 +731,14 @@
 @ cdecl -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z(ptr ptr long) msvcirt.?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z
 @ stub -arch=win32 ?setbuf at strstreambuf@@UAEPAVstreambuf@@PADH at Z
 @ stub -arch=win64 ?setbuf at strstreambuf@@UEAAPEAVstreambuf@@PEADH at Z
-@ stub -arch=win32 ?setf at ios@@QAEJJ at Z
-@ stub -arch=win64 ?setf at ios@@QEAAJJ at Z
-@ stub -arch=win32 ?setf at ios@@QAEJJJ at Z
-@ stub -arch=win64 ?setf at ios@@QEAAJJJ at Z
+@ thiscall -arch=win32 ?setf at ios@@QAEJJ at Z(ptr long) msvcirt.?setf at ios@@QAEJJ at Z
+@ cdecl -arch=win64 ?setf at ios@@QEAAJJ at Z(ptr long) msvcirt.?setf at ios@@QEAAJJ at Z
+@ thiscall -arch=win32 ?setf at ios@@QAEJJJ at Z(ptr long long) msvcirt.?setf at ios@@QAEJJJ at Z
+@ cdecl -arch=win64 ?setf at ios@@QEAAJJJ at Z(ptr long long) msvcirt.?setf at ios@@QEAAJJJ at Z
 @ thiscall -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IAEXPAD00 at Z
 @ cdecl -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IEAAXPEAD00 at Z
-@ stub -arch=win32 ?setlock at ios@@QAAXXZ
-@ stub -arch=win64 ?setlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?setlock at ios@@QAAXXZ(ptr) msvcirt.?setlock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?setlock at ios@@QEAAXXZ(ptr) msvcirt.?setlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?setlock at streambuf@@QAEXXZ(ptr) msvcirt.?setlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?setlock at streambuf@@QEAAXXZ(ptr) msvcirt.?setlock at streambuf@@QEAAXXZ
 @ stub -arch=win32 ?setmode at filebuf@@QAEHH at Z
@@ -791,17 +791,17 @@
 @ cdecl -arch=win64 ?sync at streambuf@@UEAAHXZ(ptr) msvcirt.?sync at streambuf@@UEAAHXZ
 @ stub -arch=win32 ?sync at strstreambuf@@UAEHXZ
 @ stub -arch=win64 ?sync at strstreambuf@@UEAAHXZ
-@ stub ?sync_with_stdio at ios@@SAXXZ
+@ cdecl ?sync_with_stdio at ios@@SAXXZ() msvcirt.?sync_with_stdio at ios@@SAXXZ
 @ stub -arch=win32 ?tellg at istream@@QAEJXZ
 @ stub -arch=win64 ?tellg at istream@@QEAAJXZ
 @ stub -arch=win32 ?tellp at ostream@@QAEJXZ
 @ stub -arch=win64 ?tellp at ostream@@QEAAJXZ
 @ cdecl ?terminate@@YAXXZ() msvcrt.?terminate@@YAXXZ
 # @ extern ?text at filebuf@@2HB
-@ stub -arch=win32 ?tie at ios@@QAEPAVostream@@PAV2@@Z
-@ stub -arch=win64 ?tie at ios@@QEAAPEAVostream@@PEAV2@@Z
-@ stub -arch=win32 ?tie at ios@@QBEPAVostream@@XZ
-@ stub -arch=win64 ?tie at ios@@QEBAPEAVostream@@XZ
+@ thiscall -arch=win32 ?tie at ios@@QAEPAVostream@@PAV2@@Z(ptr ptr) msvcirt.?tie at ios@@QAEPAVostream@@PAV2@@Z
+@ cdecl -arch=win64 ?tie at ios@@QEAAPEAVostream@@PEAV2@@Z(ptr ptr) msvcirt.?tie at ios@@QEAAPEAVostream@@PEAV2@@Z
+@ thiscall -arch=win32 ?tie at ios@@QBEPAVostream@@XZ(ptr) msvcirt.?tie at ios@@QBEPAVostream@@XZ
+@ cdecl -arch=win64 ?tie at ios@@QEBAPEAVostream@@XZ(ptr) msvcirt.?tie at ios@@QEBAPEAVostream@@XZ
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IAEXH at Z(ptr long) msvcirt.?unbuffered at streambuf@@IAEXH at Z
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEAAXH at Z(ptr long) msvcirt.?unbuffered at streambuf@@IEAAXH at Z
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IBEHXZ(ptr) msvcirt.?unbuffered at streambuf@@IBEHXZ
@@ -813,21 +813,21 @@
 @ stub -arch=win32 ?underflow at strstreambuf@@UAEHXZ
 @ stub -arch=win64 ?underflow at strstreambuf@@UEAAHXZ
 @ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
-@ stub -arch=win32 ?unlock at ios@@QAAXXZ
-@ stub -arch=win64 ?unlock at ios@@QEAAXXZ
+@ cdecl -arch=win32 ?unlock at ios@@QAAXXZ(ptr) msvcirt.?unlock at ios@@QAAXXZ
+@ cdecl -arch=win64 ?unlock at ios@@QEAAXXZ(ptr) msvcirt.?unlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?unlock at streambuf@@QAEXXZ(ptr) msvcirt.?unlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?unlock at streambuf@@QEAAXXZ(ptr) msvcirt.?unlock at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?unlockbuf at ios@@QAAXXZ
-@ stub -arch=win64 ?unlockbuf at ios@@QEAAXXZ
-@ stub ?unlockc at ios@@KAXXZ
-@ stub -arch=win32 ?unsetf at ios@@QAEJJ at Z
-@ stub -arch=win64 ?unsetf at ios@@QEAAJJ at Z
+@ cdecl -arch=win32 ?unlockbuf at ios@@QAAXXZ(ptr) msvcirt.?unlockbuf at ios@@QAAXXZ
+@ cdecl -arch=win64 ?unlockbuf at ios@@QEAAXXZ(ptr) msvcirt.?unlockbuf at ios@@QEAAXXZ
+@ cdecl ?unlockc at ios@@KAXXZ() msvcirt.?unlockc at ios@@KAXXZ
+@ thiscall -arch=win32 ?unsetf at ios@@QAEJJ at Z(ptr long) msvcirt.?unsetf at ios@@QAEJJ at Z
+@ cdecl -arch=win64 ?unsetf at ios@@QEAAJJ at Z(ptr long) msvcirt.?unsetf at ios@@QEAAJJ at Z
 @ thiscall -arch=i386 ?what at exception@@UBEPBDXZ(ptr) msvcrt.?what at exception@@UBEPBDXZ
 @ cdecl -arch=win64 ?what at exception@@UEBAPEBDXZ(ptr) msvcrt.?what at exception@@UEBAPEBDXZ
-@ stub -arch=win32 ?width at ios@@QAEHH at Z
-@ stub -arch=win64 ?width at ios@@QEAAHH at Z
-@ stub -arch=win32 ?width at ios@@QBEHXZ
-@ stub -arch=win64 ?width at ios@@QEBAHXZ
+@ thiscall -arch=win32 ?width at ios@@QAEHH at Z(ptr long) msvcirt.?width at ios@@QAEHH at Z
+@ cdecl -arch=win64 ?width at ios@@QEAAHH at Z(ptr long) msvcirt.?width at ios@@QEAAHH at Z
+@ thiscall -arch=win32 ?width at ios@@QBEHXZ(ptr) msvcirt.?width at ios@@QBEHXZ
+@ cdecl -arch=win64 ?width at ios@@QEBAHXZ(ptr) msvcirt.?width at ios@@QEBAHXZ
 @ stub -arch=win32 ?write at ostream@@QAEAAV1 at PBCH@Z
 @ stub -arch=win64 ?write at ostream@@QEAAAEAV1 at PEBCH@Z
 @ stub -arch=win32 ?write at ostream@@QAEAAV1 at PBDH@Z
@@ -842,7 +842,7 @@
 # @ extern ?x_lockc at ios@@0U_CRT_CRITICAL_SECTION@@A
 # @ extern ?x_maxbit at ios@@0JA
 # @ extern ?x_statebuf at ios@@0PAJA
-@ stub ?xalloc at ios@@SAHXZ
+@ cdecl ?xalloc at ios@@SAHXZ() msvcirt.?xalloc at ios@@SAHXZ
 @ thiscall -arch=win32 ?xsgetn at streambuf@@UAEHPADH at Z(ptr ptr long) msvcirt.?xsgetn at streambuf@@UAEHPADH at Z
 @ cdecl -arch=win64 ?xsgetn at streambuf@@UEAAHPEADH at Z(ptr ptr long) msvcirt.?xsgetn at streambuf@@UEAAHPEADH at Z
 @ thiscall -arch=win32 ?xsputn at streambuf@@UAEHPBDH at Z(ptr ptr long) msvcirt.?xsputn at streambuf@@UAEHPBDH at Z
-- 
2.1.4




More information about the wine-patches mailing list