[1/6] msvcirt: Add stub for class istream

Iván Matellanes matellanesivan at gmail.com
Fri Jul 15 04:26:51 CDT 2016


Signed-off-by: Iván Matellanes <matellanes.ivan at gmail.com>
---
 dlls/msvcirt/msvcirt.c      | 357 ++++++++++++++++++++++++++++++++++++++++++++
 dlls/msvcirt/msvcirt.spec   | 152 +++++++++----------
 dlls/msvcrt20/msvcrt20.spec | 148 +++++++++---------
 dlls/msvcrt40/msvcrt40.spec | 152 +++++++++----------
 4 files changed, 583 insertions(+), 226 deletions(-)

diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index 07aea3e..bf0967d 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -154,6 +154,13 @@ typedef struct _ostream {
     int unknown;
 } ostream;
 
+/* class istream */
+typedef struct {
+    const int *vbtable;
+    int extract_delim;
+    int count;
+} istream;
+
 /* ??_7streambuf@@6B@ */
 extern const vtable_ptr MSVCP_streambuf_vtable;
 /* ??_7filebuf@@6B@ */
@@ -166,6 +173,8 @@ extern const vtable_ptr MSVCP_stdiobuf_vtable;
 extern const vtable_ptr MSVCP_ios_vtable;
 /* ??_7ostream@@6B@ */
 extern const vtable_ptr MSVCP_ostream_vtable;
+/* ??_7istream@@6B@ */
+extern const vtable_ptr MSVCP_istream_vtable;
 
 #ifndef __GNUC__
 void __asm_dummy_vtables(void) {
@@ -222,6 +231,8 @@ void __asm_dummy_vtables(void) {
             VTABLE_ADD_FUNC(ios_vector_dtor));
     __ASM_VTABLE(ostream,
             VTABLE_ADD_FUNC(ostream_vector_dtor));
+    __ASM_VTABLE(istream,
+            VTABLE_ADD_FUNC(istream_vector_dtor));
 #ifndef __GNUC__
 }
 #endif
@@ -231,6 +242,8 @@ void __asm_dummy_vtables(void) {
 
 /* ??_8ostream@@7B@ */
 const int ostream_vbtable[] = {0, VBTABLE_ENTRY(ostream, FIELD_OFFSET(ostream, vbtable), ios)};
+/* ??_8istream@@7B@ */
+const int istream_vbtable[] = {0, VBTABLE_ENTRY(istream, FIELD_OFFSET(istream, vbtable), ios)};
 
 DEFINE_RTTI_DATA0(streambuf, 0, ".?AVstreambuf@@")
 DEFINE_RTTI_DATA1(filebuf, 0, &streambuf_rtti_base_descriptor, ".?AVfilebuf@@")
@@ -238,6 +251,7 @@ DEFINE_RTTI_DATA1(strstreambuf, 0, &streambuf_rtti_base_descriptor, ".?AVstrstre
 DEFINE_RTTI_DATA1(stdiobuf, 0, &streambuf_rtti_base_descriptor, ".?AVstdiobuf@@")
 DEFINE_RTTI_DATA0(ios, 0, ".?AVios@@")
 DEFINE_RTTI_DATA1(ostream, sizeof(ostream), &ios_rtti_base_descriptor, ".?AVostream@@")
+DEFINE_RTTI_DATA1(istream, sizeof(istream), &ios_rtti_base_descriptor, ".?AVistream@@")
 
 /* ??0streambuf@@IAE at PADH@Z */
 /* ??0streambuf@@IEAA at PEADH@Z */
@@ -2864,6 +2878,348 @@ ostream* __cdecl ostream_flush_manip(ostream *this)
    return ostream_flush(this);
 }
 
+static inline ios* istream_get_ios(const istream *this)
+{
+    return (ios*)((char*)this + this->vbtable[1]);
+}
+
+static inline ios* istream_to_ios(const istream *this)
+{
+    return (ios*)((char*)this + istream_vbtable[1]);
+}
+
+static inline istream* ios_to_istream(const ios *base)
+{
+    return (istream*)((char*)base - istream_vbtable[1]);
+}
+
+/* ??0istream@@QAE at PAVstreambuf@@@Z */
+/* ??0istream@@QEAA at PEAVstreambuf@@@Z */
+DEFINE_THISCALL_WRAPPER(istream_sb_ctor, 12)
+istream* __thiscall istream_sb_ctor(istream *this, streambuf *sb, BOOL virt_init)
+{
+    FIXME("(%p %p %d) stub\n", this, sb, virt_init);
+    return this;
+}
+
+/* ??0istream@@IAE at ABV0@@Z */
+/* ??0istream@@IEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(istream_copy_ctor, 12)
+istream* __thiscall istream_copy_ctor(istream *this, const istream *copy, BOOL virt_init)
+{
+    FIXME("(%p %p %d) stub\n", this, copy, virt_init);
+    return this;
+}
+
+/* ??0istream@@IAE at XZ */
+/* ??0istream@@IEAA at XZ */
+DEFINE_THISCALL_WRAPPER(istream_ctor, 8)
+istream* __thiscall istream_ctor(istream *this, BOOL virt_init)
+{
+    FIXME("(%p %d) stub\n", this, virt_init);
+    return this;
+}
+
+/* ??1istream@@UAE at XZ */
+/* ??1istream@@UEAA at XZ */
+DEFINE_THISCALL_WRAPPER(istream_dtor, 4)
+void __thiscall istream_dtor(ios *base)
+{
+    FIXME("(%p) stub\n", base);
+}
+
+/* ??4istream@@IAEAAV0 at PAVstreambuf@@@Z */
+/* ??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z */
+DEFINE_THISCALL_WRAPPER(istream_assign_sb, 8)
+istream* __thiscall istream_assign_sb(istream *this, streambuf *sb)
+{
+    FIXME("(%p %p) stub\n", this, sb);
+    return this;
+}
+
+/* ??4istream@@IAEAAV0 at ABV0@@Z */
+/* ??4istream@@IEAAAEAV0 at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(istream_assign, 8)
+istream* __thiscall istream_assign(istream *this, const istream *rhs)
+{
+    FIXME("(%p %p) stub\n", this, rhs);
+    return this;
+}
+
+/* ??_Distream@@QAEXXZ */
+/* ??_Distream@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(istream_vbase_dtor, 4)
+void __thiscall istream_vbase_dtor(istream *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ??_Eistream@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(istream_vector_dtor, 8)
+istream* __thiscall istream_vector_dtor(ios *base, unsigned int flags)
+{
+    istream *this = ios_to_istream(base);
+
+    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--)
+            istream_vbase_dtor(this+i);
+        MSVCRT_operator_delete(ptr);
+    } else {
+        istream_vbase_dtor(this);
+        if (flags & 1)
+            MSVCRT_operator_delete(this);
+    }
+    return this;
+}
+
+/* ??_Gistream@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(istream_scalar_dtor, 8)
+istream* __thiscall istream_scalar_dtor(ios *base, unsigned int flags)
+{
+    istream *this = ios_to_istream(base);
+
+    TRACE("(%p %x)\n", this, flags);
+
+    istream_vbase_dtor(this);
+    if (flags & 1) MSVCRT_operator_delete(this);
+    return this;
+}
+
+/* ?eatwhite at istream@@QAEXXZ */
+/* ?eatwhite at istream@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(istream_eatwhite, 4)
+void __thiscall istream_eatwhite(istream *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?gcount at istream@@QBEHXZ */
+/* ?gcount at istream@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(istream_gcount, 4)
+int __thiscall istream_gcount(const istream *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?ipfx at istream@@QAEHH at Z */
+/* ?ipfx at istream@@QEAAHH at Z */
+DEFINE_THISCALL_WRAPPER(istream_ipfx, 8)
+int __thiscall istream_ipfx(istream *this, int need)
+{
+    FIXME("(%p %d) stub\n", this, need);
+    return 0;
+}
+
+/* ?isfx at istream@@QAEXXZ */
+/* ?isfx at istream@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(istream_isfx, 4)
+void __thiscall istream_isfx(istream *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ?get at istream@@IAEAAV1 at PADHH@Z */
+/* ?get at istream@@IEAAAEAV1 at PEADHH@Z */
+DEFINE_THISCALL_WRAPPER(istream_get_str_delim, 16)
+istream* __thiscall istream_get_str_delim(istream *this, char *str, int count, int delim)
+{
+    FIXME("(%p %p %d %d) stub\n", this, str, count, delim);
+    return this;
+}
+
+/* ?get at istream@@QAEAAV1 at PACHD@Z */
+/* ?get at istream@@QEAAAEAV1 at PEACHD@Z */
+/* ?get at istream@@QAEAAV1 at PADHD@Z */
+/* ?get at istream@@QEAAAEAV1 at PEADHD@Z */
+DEFINE_THISCALL_WRAPPER(istream_get_str, 16)
+istream* __thiscall istream_get_str(istream *this, char *str, int count, char delim)
+{
+    FIXME("(%p %p %d %c) stub\n", this, str, count, delim);
+    return this;
+}
+
+/* ?get at istream@@QAEAAV1 at PAEHD@Z */
+/* ?get at istream@@QEAAAEAV1 at PEAEHD@Z */
+DEFINE_THISCALL_WRAPPER(istream_get_unsigned_str, 16)
+istream* __thiscall istream_get_unsigned_str(istream *this, unsigned char *str, int count, char delim)
+{
+    FIXME("(%p %p %d %c) stub\n", this, str, count, delim);
+    return this;
+}
+
+/* ?get at istream@@QAEAAV1 at AAC@Z */
+/* ?get at istream@@QEAAAEAV1 at AEAC@Z */
+/* ?get at istream@@QAEAAV1 at AAD@Z */
+/* ?get at istream@@QEAAAEAV1 at AEAD@Z */
+DEFINE_THISCALL_WRAPPER(istream_get_char, 8)
+istream* __thiscall istream_get_char(istream *this, char *ch)
+{
+    FIXME("(%p %p) stub\n", this, ch);
+    return this;
+}
+
+/* ?get at istream@@QAEAAV1 at AAE@Z */
+/* ?get at istream@@QEAAAEAV1 at AEAE@Z */
+DEFINE_THISCALL_WRAPPER(istream_get_unsigned_char, 8)
+istream* __thiscall istream_get_unsigned_char(istream *this, unsigned char *ch)
+{
+    FIXME("(%p %p) stub\n", this, ch);
+    return this;
+}
+
+/* ?get at istream@@QAEHXZ */
+/* ?get at istream@@QEAAHXZ */
+DEFINE_THISCALL_WRAPPER(istream_get, 4)
+int __thiscall istream_get(istream *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z */
+/* ?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z */
+DEFINE_THISCALL_WRAPPER(istream_get_sb, 12)
+istream* __thiscall istream_get_sb(istream *this, streambuf *sb, char delim)
+{
+    FIXME("(%p %p %c) stub\n", this, sb, delim);
+    return this;
+}
+
+/* ?getline at istream@@QAEAAV1 at PACHD@Z */
+/* ?getline at istream@@QEAAAEAV1 at PEACHD@Z */
+/* ?getline at istream@@QAEAAV1 at PADHD@Z */
+/* ?getline at istream@@QEAAAEAV1 at PEADHD@Z */
+DEFINE_THISCALL_WRAPPER(istream_getline, 16)
+istream* __thiscall istream_getline(istream *this, char *str, int count, char delim)
+{
+    FIXME("(%p %p %d %c) stub\n", this, str, count, delim);
+    return this;
+}
+
+/* ?getline at istream@@QAEAAV1 at PAEHD@Z */
+/* ?getline at istream@@QEAAAEAV1 at PEAEHD@Z */
+DEFINE_THISCALL_WRAPPER(istream_getline_unsigned, 16)
+istream* __thiscall istream_getline_unsigned(istream *this, unsigned char *str, int count, char delim)
+{
+    FIXME("(%p %p %d %c) stub\n", this, str, count, delim);
+    return this;
+}
+
+/* ?ignore at istream@@QAEAAV1 at HH@Z */
+/* ?ignore at istream@@QEAAAEAV1 at HH@Z */
+DEFINE_THISCALL_WRAPPER(istream_ignore, 12)
+istream* __thiscall istream_ignore(istream *this, int count, int delim)
+{
+    FIXME("(%p %d %d) stub\n", this, count, delim);
+    return this;
+}
+
+/* ?peek at istream@@QAEHXZ */
+/* ?peek at istream@@QEAAHXZ */
+DEFINE_THISCALL_WRAPPER(istream_peek, 4)
+int __thiscall istream_peek(istream *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?putback at istream@@QAEAAV1 at D@Z */
+/* ?putback at istream@@QEAAAEAV1 at D@Z */
+DEFINE_THISCALL_WRAPPER(istream_putback, 8)
+istream* __thiscall istream_putback(istream *this, char ch)
+{
+    FIXME("(%p %c) stub\n", this, ch);
+    return this;
+}
+
+/* ?read at istream@@QAEAAV1 at PACH@Z */
+/* ?read at istream@@QEAAAEAV1 at PEACH@Z */
+/* ?read at istream@@QAEAAV1 at PADH@Z */
+/* ?read at istream@@QEAAAEAV1 at PEADH@Z */
+DEFINE_THISCALL_WRAPPER(istream_read, 12)
+istream* __thiscall istream_read(istream *this, char *str, int count)
+{
+    FIXME("(%p %p %d) stub\n", this, str, count);
+    return this;
+}
+
+/* ?read at istream@@QAEAAV1 at PAEH@Z */
+/* ?read at istream@@QEAAAEAV1 at PEAEH@Z */
+DEFINE_THISCALL_WRAPPER(istream_read_unsigned, 12)
+istream* __thiscall istream_read_unsigned(istream *this, unsigned char *str, int count)
+{
+    FIXME("(%p %p %d) stub\n", this, str, count);
+    return this;
+}
+
+/* ?seekg at istream@@QAEAAV1 at J@Z */
+/* ?seekg at istream@@QEAAAEAV1 at J@Z */
+DEFINE_THISCALL_WRAPPER(istream_seekg, 8)
+istream* __thiscall istream_seekg(istream *this, streampos pos)
+{
+    FIXME("(%p %d) stub\n", this, pos);
+    return this;
+}
+
+/* ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z */
+/* ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z */
+DEFINE_THISCALL_WRAPPER(istream_seekg_offset, 12)
+istream* __thiscall istream_seekg_offset(istream *this, streamoff off, ios_seek_dir dir)
+{
+    FIXME("(%p %d %d) stub\n", this, off, dir);
+    return this;
+}
+
+/* ?sync at istream@@QAEHXZ */
+/* ?sync at istream@@QEAAHXZ */
+DEFINE_THISCALL_WRAPPER(istream_sync, 4)
+int __thiscall istream_sync(istream *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?tellg at istream@@QAEJXZ */
+/* ?tellg at istream@@QEAAJXZ */
+DEFINE_THISCALL_WRAPPER(istream_tellg, 4)
+streampos __thiscall istream_tellg(istream *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?getint at istream@@AAEHPAD at Z */
+/* ?getint at istream@@AEAAHPEAD at Z */
+DEFINE_THISCALL_WRAPPER(istream_getint, 8)
+int __thiscall istream_getint(istream *this, char *str)
+{
+    FIXME("(%p %p) stub\n", this, str);
+    return 0;
+}
+
+/* ?getdouble at istream@@AAEHPADH at Z */
+/* ?getdouble at istream@@AEAAHPEADH at Z */
+DEFINE_THISCALL_WRAPPER(istream_getdouble, 12)
+int __thiscall istream_getdouble(istream *this, char *str, int n)
+{
+    FIXME("(%p %p %d) stub\n", this, str, n);
+    return 0;
+}
+
+/* ?ws@@YAAAVistream@@AAV1@@Z */
+/* ?ws@@YAAEAVistream@@AEAV1@@Z */
+istream* __cdecl istream_ws(istream *this)
+{
+   FIXME("(%p) stub\n", this);
+   return this;
+}
+
 /******************************************************************
  *		 ??0ostrstream@@QAE at XZ (MSVCRTI.@)
  */
@@ -2939,6 +3295,7 @@ static void init_io(void *base)
     init_stdiobuf_rtti(base);
     init_ios_rtti(base);
     init_ostream_rtti(base);
+    init_istream_rtti(base);
 #endif
 }
 
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index b9140a4..74dde53 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -48,12 +48,12 @@
 @ stub -arch=win64 ??0iostream@@IEAA at XZ
 @ stub -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z  # __thiscall iostream::iostream(class streambuf *)
 @ stub -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??0istream@@IAE at ABV0@@Z  # __thiscall istream::istream(class istream const &)
-@ stub -arch=win64 ??0istream@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0istream@@IAE at XZ  # __thiscall istream::istream(void)
-@ stub -arch=win64 ??0istream@@IEAA at XZ
-@ stub -arch=win32 ??0istream@@QAE at PAVstreambuf@@@Z  # __thiscall istream::istream(class streambuf *)
-@ stub -arch=win64 ??0istream@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0istream@@IAE at ABV0@@Z(ptr ptr long) istream_copy_ctor
+@ cdecl -arch=win64 ??0istream@@IEAA at AEBV0@@Z(ptr ptr long) istream_copy_ctor
+@ thiscall -arch=win32 ??0istream@@IAE at XZ(ptr long) istream_ctor
+@ cdecl -arch=win64 ??0istream@@IEAA at XZ(ptr long) istream_ctor
+@ thiscall -arch=win32 ??0istream@@QAE at PAVstreambuf@@@Z(ptr ptr long) istream_sb_ctor
+@ cdecl -arch=win64 ??0istream@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) istream_sb_ctor
 @ stub -arch=win32 ??0istream_withassign@@QAE at ABV0@@Z  # __thiscall istream_withassign::istream_withassign(class istream_withassign const &)
 @ stub -arch=win64 ??0istream_withassign@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0istream_withassign@@QAE at PAVstreambuf@@@Z  # __thiscall istream_withassign::istream_withassign(class streambuf *)
@@ -144,8 +144,8 @@
 @ 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)
-@ stub -arch=win64 ??1istream@@UEAA at XZ
+@ thiscall -arch=win32 ??1istream@@UAE at XZ(ptr) istream_dtor
+@ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) istream_dtor
 @ stub -arch=win32 ??1istream_withassign@@UAE at XZ  # virtual __thiscall istream_withassign::~istream_withassign(void)
 @ stub -arch=win64 ??1istream_withassign@@UEAA at XZ
 @ stub -arch=win32 ??1istrstream@@UAE at XZ  # virtual __thiscall istrstream::~istrstream(void)
@@ -186,10 +186,10 @@
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z  # class iostream & __thiscall iostream::operator=(class streambuf *)
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z  # class istream & __thiscall istream::operator=(class istream const &)
-@ stub -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z  # class istream & __thiscall istream::operator=(class streambuf *)
-@ stub -arch=win64 ??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z(ptr ptr) istream_assign
+@ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) istream_assign
+@ thiscall -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) istream_assign_sb
+@ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z(ptr ptr) istream_assign_sb
 @ stub -arch=win32 ??4istream_withassign@@QAEAAV0 at ABV0@@Z  # class istream_withassign & __thiscall istream_withassign::operator=(class istream_withassign const &)
 @ stub -arch=win64 ??4istream_withassign@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4istream_withassign@@QAEAAVistream@@ABV1@@Z  # class istream & __thiscall istream_withassign::operator=(class istream const &)
@@ -308,7 +308,7 @@
 # @ extern ??_7ifstream@@6B@  # const ifstream::`vftable'
 @ extern ??_7ios@@6B@ MSVCP_ios_vtable
 # @ extern ??_7iostream@@6B@  # const iostream::`vftable'
-# @ extern ??_7istream@@6B@  # const istream::`vftable'
+@ extern ??_7istream@@6B@ MSVCP_istream_vtable
 # @ extern ??_7istream_withassign@@6B@  # const istream_withassign::`vftable'
 # @ extern ??_7istrstream@@6B@  # const istrstream::`vftable'
 @ extern ??_7logic_error@@6B@ MSVCP_logic_error_vtable
@@ -326,7 +326,7 @@
 # @ extern ??_8ifstream@@7B@  # const ifstream::`vbtable'
 # @ extern ??_8iostream@@7Bistream@@@  # const iostream::`vbtable'{for `istream'}
 # @ extern ??_8iostream@@7Bostream@@@  # const iostream::`vbtable'{for `ostream'}
-# @ extern ??_8istream@@7B@  # const istream::`vbtable'
+@ extern ??_8istream@@7B@ istream_vbtable
 # @ extern ??_8istream_withassign@@7B@  # const istream_withassign::`vbtable'
 # @ extern ??_8istrstream@@7B@  # const istrstream::`vbtable'
 # @ extern ??_8ofstream@@7B@  # const ofstream::`vbtable'
@@ -343,8 +343,8 @@
 @ stub -arch=win64 ??_Difstream@@QEAAXXZ
 @ stub -arch=win32 ??_Diostream@@QAEXXZ  # void __thiscall iostream::`vbase destructor'(void)
 @ stub -arch=win64 ??_Diostream@@QEAAXXZ
-@ stub -arch=win32 ??_Distream@@QAEXXZ  # void __thiscall istream::`vbase destructor'(void)
-@ stub -arch=win64 ??_Distream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) istream_vbase_dtor
+@ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) istream_vbase_dtor
 @ stub -arch=win32 ??_Distream_withassign@@QAEXXZ  # void __thiscall istream_withassign::`vbase destructor'(void)
 @ stub -arch=win64 ??_Distream_withassign@@QEAAXXZ
 @ stub -arch=win32 ??_Distrstream@@QAEXXZ  # void __thiscall istrstream::`vbase destructor'(void)
@@ -367,7 +367,7 @@
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`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)
+@ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) istream_vector_dtor
 @ stub -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z  # virtual void * __thiscall istream_withassign::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z  # virtual void * __thiscall istrstream::`vector deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Elogic_error@@UAEPAXI at Z(ptr long) MSVCP_logic_error_vector_dtor
@@ -386,7 +386,7 @@
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`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)
+@ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) istream_scalar_dtor
 @ stub -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z  # virtual void * __thiscall istream_withassign::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z  # virtual void * __thiscall istrstream::`scalar deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Glogic_error@@UAEPAXI at Z(ptr long) MSVCP_logic_error_scalar_dtor
@@ -449,8 +449,8 @@
 @ cdecl -arch=win64 ?doallocate at streambuf@@MEAAHXZ(ptr) streambuf_doallocate
 @ thiscall -arch=win32 ?doallocate at strstreambuf@@MAEHXZ(ptr) strstreambuf_doallocate
 @ cdecl -arch=win64 ?doallocate at strstreambuf@@MEAAHXZ(ptr) strstreambuf_doallocate
-@ stub -arch=win32 ?eatwhite at istream@@QAEXXZ  # void __thiscall istream::eatwhite(void)
-@ stub -arch=win64 ?eatwhite at istream@@QEAAXXZ
+@ thiscall -arch=win32 ?eatwhite at istream@@QAEXXZ(ptr) istream_eatwhite
+@ cdecl -arch=win64 ?eatwhite at istream@@QEAAXXZ(ptr) istream_eatwhite
 @ thiscall -arch=win32 ?eback at streambuf@@IBEPADXZ(ptr) streambuf_eback
 @ cdecl -arch=win64 ?eback at streambuf@@IEBAPEADXZ(ptr) streambuf_eback
 @ thiscall -arch=win32 ?ebuf at streambuf@@IBEPADXZ(ptr) streambuf_ebuf
@@ -493,50 +493,50 @@
 @ cdecl -arch=win64 ?freeze at strstreambuf@@QEAAXH at Z(ptr long) strstreambuf_freeze
 @ thiscall -arch=win32 ?gbump at streambuf@@IAEXH at Z(ptr long) streambuf_gbump
 @ cdecl -arch=win64 ?gbump at streambuf@@IEAAXH at Z(ptr long) streambuf_gbump
-@ stub -arch=win32 ?gcount at istream@@QBEHXZ  # int __thiscall istream::gcount(void)const 
-@ stub -arch=win64 ?gcount at istream@@QEBAHXZ
-@ stub -arch=win32 ?get at istream@@IAEAAV1 at PADHH@Z  # class istream & __thiscall istream::get(char *,int,int)
-@ stub -arch=win64 ?get at istream@@IEAAAEAV1 at PEADHH@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAC@Z  # class istream & __thiscall istream::get(signed char &)
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAC@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAD@Z  # class istream & __thiscall istream::get(char &)
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAE@Z  # class istream & __thiscall istream::get(unsigned char &)
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAE@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z  # class istream & __thiscall istream::get(class streambuf &,char)
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PACHD@Z  # class istream & __thiscall istream::get(signed char *,int,char)
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEACHD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PADHD@Z  # class istream & __thiscall istream::get(char *,int,char)
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEADHD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PAEHD@Z  # class istream & __thiscall istream::get(unsigned char *,int,char)
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEAEHD@Z
-@ stub -arch=win32 ?get at istream@@QAEHXZ  # int __thiscall istream::get(void)
-@ stub -arch=win64 ?get at istream@@QEAAHXZ
-@ stub -arch=win32 ?getdouble at istream@@AAEHPADH at Z  # int __thiscall istream::getdouble(char *,int)
-@ stub -arch=win64 ?getdouble at istream@@AEAAHPEADH at Z
-@ stub -arch=win32 ?getint at istream@@AAEHPAD at Z  # int __thiscall istream::getint(char *)
-@ stub -arch=win64 ?getint at istream@@AEAAHPEAD at Z
-@ stub -arch=win32 ?getline at istream@@QAEAAV1 at PACHD@Z  # class istream & __thiscall istream::getline(signed char *,int,char)
-@ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEACHD@Z
-@ stub -arch=win32 ?getline at istream@@QAEAAV1 at PADHD@Z  # class istream & __thiscall istream::getline(char *,int,char)
-@ 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
+@ thiscall -arch=win32 ?gcount at istream@@QBEHXZ(ptr) istream_gcount
+@ cdecl -arch=win64 ?gcount at istream@@QEBAHXZ(ptr) istream_gcount
+@ thiscall -arch=win32 ?get at istream@@IAEAAV1 at PADHH@Z(ptr ptr long long) istream_get_str_delim
+@ cdecl -arch=win64 ?get at istream@@IEAAAEAV1 at PEADHH@Z(ptr ptr long long) istream_get_str_delim
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAC@Z(ptr ptr) istream_get_char
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAC@Z(ptr ptr) istream_get_char
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAD@Z(ptr ptr) istream_get_char
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAD@Z(ptr ptr) istream_get_char
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAE@Z(ptr ptr) istream_get_unsigned_char
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAE@Z(ptr ptr) istream_get_unsigned_char
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z(ptr ptr long) istream_get_sb
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z(ptr ptr long) istream_get_sb
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PACHD@Z(ptr ptr long long) istream_get_str
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEACHD@Z(ptr ptr long long) istream_get_str
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PADHD@Z(ptr ptr long long) istream_get_str
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEADHD@Z(ptr ptr long long) istream_get_str
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PAEHD@Z(ptr ptr long long) istream_get_unsigned_str
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEAEHD@Z(ptr ptr long long) istream_get_unsigned_str
+@ thiscall -arch=win32 ?get at istream@@QAEHXZ(ptr) istream_get
+@ cdecl -arch=win64 ?get at istream@@QEAAHXZ(ptr) istream_get
+@ thiscall -arch=win32 ?getdouble at istream@@AAEHPADH at Z(ptr ptr long) istream_getdouble
+@ cdecl -arch=win64 ?getdouble at istream@@AEAAHPEADH at Z(ptr ptr long) istream_getdouble
+@ thiscall -arch=win32 ?getint at istream@@AAEHPAD at Z(ptr ptr) istream_getint
+@ cdecl -arch=win64 ?getint at istream@@AEAAHPEAD at Z(ptr ptr) istream_getint
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PACHD@Z(ptr ptr long long) istream_getline
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEACHD@Z(ptr ptr long long) istream_getline
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PADHD@Z(ptr ptr long long) istream_getline
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEADHD@Z(ptr ptr long long) istream_getline
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PAEHD@Z(ptr ptr long long) istream_getline_unsigned
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEAEHD@Z(ptr ptr long long) istream_getline_unsigned
 @ 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
 @ 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 ?ignore at istream@@QAEAAV1 at HH@Z(ptr long long) istream_ignore
+@ cdecl -arch=win64 ?ignore at istream@@QEAAAEAV1 at HH@Z(ptr long long) istream_ignore
 @ thiscall -arch=win32 ?in_avail at streambuf@@QBEHXZ(ptr) streambuf_in_avail
 @ cdecl -arch=win64 ?in_avail at streambuf@@QEBAHXZ(ptr) streambuf_in_avail
 @ 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
+@ thiscall -arch=win32 ?ipfx at istream@@QAEHH at Z(ptr long) istream_ipfx
+@ cdecl -arch=win64 ?ipfx at istream@@QEAAHH at Z(ptr long) istream_ipfx
 @ thiscall -arch=win32 ?is_open at filebuf@@QBEHXZ(ptr) filebuf_is_open
 @ cdecl -arch=win64 ?is_open at filebuf@@QEBAHXZ(ptr) filebuf_is_open
 @ stub -arch=win32 ?is_open at fstream@@QBEHXZ  # int __thiscall fstream::is_open(void)const 
@@ -545,8 +545,8 @@
 @ stub -arch=win64 ?is_open at ifstream@@QEBAHXZ
 @ stub -arch=win32 ?is_open at ofstream@@QBEHXZ  # int __thiscall ofstream::is_open(void)const 
 @ 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
+@ thiscall -arch=win32 ?isfx at istream@@QAEXXZ(ptr) istream_isfx
+@ cdecl -arch=win64 ?isfx at istream@@QEAAXXZ(ptr) istream_isfx
 @ 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
@@ -595,8 +595,8 @@
 @ stub -arch=win64 ?pcount at ostrstream@@QEBAHXZ
 @ stub -arch=win32 ?pcount at strstream@@QBEHXZ  # int __thiscall strstream::pcount(void)const 
 @ stub -arch=win64 ?pcount at strstream@@QEBAHXZ
-@ stub -arch=win32 ?peek at istream@@QAEHXZ  # int __thiscall istream::peek(void)
-@ stub -arch=win64 ?peek at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?peek at istream@@QAEHXZ(ptr) istream_peek
+@ cdecl -arch=win64 ?peek at istream@@QEAAHXZ(ptr) istream_peek
 @ thiscall -arch=win32 ?pptr at streambuf@@IBEPADXZ(ptr) streambuf_pptr
 @ cdecl -arch=win64 ?pptr at streambuf@@IEBAPEADXZ(ptr) streambuf_pptr
 @ thiscall -arch=win32 ?precision at ios@@QAEHH at Z(ptr long) ios_precision_set
@@ -609,8 +609,8 @@
 @ cdecl -arch=win64 ?put at ostream@@QEAAAEAV1 at D@Z(ptr long) ostream_put_char
 @ thiscall -arch=win32 ?put at ostream@@QAEAAV1 at E@Z(ptr long) ostream_put_unsigned_char
 @ cdecl -arch=win64 ?put at ostream@@QEAAAEAV1 at E@Z(ptr long) ostream_put_unsigned_char
-@ 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
+@ thiscall -arch=win32 ?putback at istream@@QAEAAV1 at D@Z(ptr long) istream_putback
+@ cdecl -arch=win64 ?putback at istream@@QEAAAEAV1 at D@Z(ptr long) istream_putback
 @ 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 
@@ -631,18 +631,18 @@
 @ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
 @ 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)
-@ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEADH@Z
-@ stub -arch=win32 ?read at istream@@QAEAAV1 at PAEH@Z  # class istream & __thiscall istream::read(unsigned char *,int)
-@ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEAEH@Z
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z(ptr ptr long) istream_read
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEACH@Z(ptr ptr long) istream_read
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PADH@Z(ptr ptr long) istream_read
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEADH@Z(ptr ptr long) istream_read
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PAEH@Z(ptr ptr long) istream_read_unsigned
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEAEH@Z(ptr ptr long) istream_read_unsigned
 @ thiscall -arch=win32 ?sbumpc at streambuf@@QAEHXZ(ptr) streambuf_sbumpc
 @ cdecl -arch=win64 ?sbumpc at streambuf@@QEAAHXZ(ptr) streambuf_sbumpc
-@ stub -arch=win32 ?seekg at istream@@QAEAAV1 at J@Z  # class istream & __thiscall istream::seekg(long)
-@ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z
-@ stub -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z  # class istream & __thiscall istream::seekg(long,enum ios::seek_dir)
-@ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
+@ thiscall -arch=win32 ?seekg at istream@@QAEAAV1 at J@Z(ptr long) istream_seekg
+@ cdecl -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z(ptr long) istream_seekg
+@ thiscall -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z(ptr ptr long) istream_seekg_offset
+@ cdecl -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z(ptr ptr long) istream_seekg_offset
 @ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) filebuf_seekoff
 @ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) filebuf_seekoff
 @ thiscall -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) stdiobuf_seekoff
@@ -723,8 +723,8 @@
 # @ extern ?sunk_with_stdio at ios@@0HA  # static int ios::sunk_with_stdio
 @ thiscall -arch=win32 ?sync at filebuf@@UAEHXZ(ptr) filebuf_sync
 @ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) filebuf_sync
-@ stub -arch=win32 ?sync at istream@@QAEHXZ  # int __thiscall istream::sync(void)
-@ stub -arch=win64 ?sync at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?sync at istream@@QAEHXZ(ptr) istream_sync
+@ cdecl -arch=win64 ?sync at istream@@QEAAHXZ(ptr) istream_sync
 @ thiscall -arch=win32 ?sync at stdiobuf@@UAEHXZ(ptr) stdiobuf_sync
 @ cdecl -arch=win64 ?sync at stdiobuf@@UEAAHXZ(ptr) stdiobuf_sync
 @ thiscall -arch=win32 ?sync at streambuf@@UAEHXZ(ptr) streambuf_sync
@@ -732,8 +732,8 @@
 @ thiscall -arch=win32 ?sync at strstreambuf@@UAEHXZ(ptr) strstreambuf_sync
 @ cdecl -arch=win64 ?sync at strstreambuf@@UEAAHXZ(ptr) strstreambuf_sync
 @ 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
+@ thiscall -arch=win32 ?tellg at istream@@QAEJXZ(ptr) istream_tellg
+@ cdecl -arch=win64 ?tellg at istream@@QEAAJXZ(ptr) istream_tellg
 @ thiscall -arch=win32 ?tellp at ostream@@QAEJXZ(ptr) ostream_tellp
 @ cdecl -arch=win64 ?tellp at ostream@@QEAAJXZ(ptr) ostream_tellp
 @ extern ?text at filebuf@@2HB filebuf_text
@@ -774,8 +774,8 @@
 @ cdecl -arch=win64 ?write at ostream@@QEAAAEAV1 at PEBEH@Z(ptr str long) ostream_write_unsigned_char
 @ thiscall -arch=win32 ?writepad at ostream@@AAEAAV1 at PBD0@Z(ptr str str) ostream_writepad
 @ cdecl -arch=win64 ?writepad at ostream@@AEAAAEAV1 at PEBD0@Z(ptr str str) ostream_writepad
-@ stub -arch=win32 ?ws@@YAAAVistream@@AAV1@@Z  # class istream & __cdecl ws(class istream &)
-@ stub -arch=win64 ?ws@@YAAEAVistream@@AEAV1@@Z
+@ cdecl -arch=win32 ?ws@@YAAAVistream@@AAV1@@Z(ptr) istream_ws
+@ cdecl -arch=win64 ?ws@@YAAEAVistream@@AEAV1@@Z(ptr) istream_ws
 @ extern ?x_curindex at ios@@0HA ios_curindex
 @ extern ?x_lockc at ios@@0U_CRT_CRITICAL_SECTION@@A ios_static_lock
 @ extern ?x_maxbit at ios@@0JA ios_maxbit
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index a51ccd9..39ad641 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -42,12 +42,12 @@
 @ stub -arch=win64 ??0iostream@@IEAA at XZ
 @ stub -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z
 @ stub -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??0istream@@IAE at ABV0@@Z
-@ stub -arch=win64 ??0istream@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0istream@@IAE at XZ
-@ stub -arch=win64 ??0istream@@IEAA at XZ
-@ stub -arch=win32 ??0istream@@QAE at PAVstreambuf@@@Z
-@ stub -arch=win64 ??0istream@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0istream@@IAE at ABV0@@Z(ptr ptr long) msvcirt.??0istream@@IAE at ABV0@@Z
+@ cdecl -arch=win64 ??0istream@@IEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0istream@@IEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0istream@@IAE at XZ(ptr long) msvcirt.??0istream@@IAE at XZ
+@ cdecl -arch=win64 ??0istream@@IEAA at XZ(ptr long) msvcirt.??0istream@@IEAA at XZ
+@ thiscall -arch=win32 ??0istream@@QAE at PAVstreambuf@@@Z(ptr ptr long) msvcirt.??0istream@@QAE at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??0istream@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) msvcirt.??0istream@@QEAA at PEAVstreambuf@@@Z
 @ stub -arch=win32 ??0istream_withassign@@QAE at ABV0@@Z
 @ stub -arch=win64 ??0istream_withassign@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0istream_withassign@@QAE at PAVstreambuf@@@Z
@@ -130,8 +130,8 @@
 @ cdecl -arch=win64 ??1ios@@UEAA at XZ(ptr) msvcirt.??1ios@@UEAA at XZ
 @ stub -arch=win32 ??1iostream@@UAE at XZ
 @ stub -arch=win64 ??1iostream@@UEAA at XZ
-@ stub -arch=win32 ??1istream@@UAE at XZ
-@ stub -arch=win64 ??1istream@@UEAA at XZ
+@ thiscall -arch=win32 ??1istream@@UAE at XZ(ptr) msvcirt.??1istream@@UAE at XZ
+@ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) msvcirt.??1istream@@UEAA at XZ
 @ stub -arch=win32 ??1istream_withassign@@UAE at XZ
 @ stub -arch=win64 ??1istream_withassign@@UEAA at XZ
 @ stub -arch=win32 ??1istrstream@@UAE at XZ
@@ -172,10 +172,10 @@
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z
-@ stub -arch=win64 ??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4istream@@IEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z
 @ stub -arch=win32 ??4istream_withassign@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4istream_withassign@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4istream_withassign@@QAEAAVistream@@ABV1@@Z
@@ -291,7 +291,7 @@
 # @ extern ??_7ifstream@@6B@
 @ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
 # @ extern ??_7iostream@@6B@
-# @ extern ??_7istream@@6B@
+@ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
 # @ extern ??_7istream_withassign@@6B@
 # @ extern ??_7istrstream@@6B@
 # @ extern ??_7ofstream@@6B@
@@ -308,7 +308,7 @@
 # @ extern ??_8ifstream@@7B@
 # @ extern ??_8iostream@@7Bistream@@@
 # @ extern ??_8iostream@@7Bostream@@@
-# @ extern ??_8istream@@7B@
+@ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
 # @ extern ??_8istream_withassign@@7B@
 # @ extern ??_8istrstream@@7B@
 # @ extern ??_8ofstream@@7B@
@@ -325,8 +325,8 @@
 @ stub -arch=win64 ??_Difstream@@QEAAXXZ
 @ stub -arch=win32 ??_Diostream@@QAEXXZ
 @ stub -arch=win64 ??_Diostream@@QEAAXXZ
-@ stub -arch=win32 ??_Distream@@QAEXXZ
-@ stub -arch=win64 ??_Distream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) msvcirt.??_Distream@@QAEXXZ
+@ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) msvcirt.??_Distream@@QEAAXXZ
 @ stub -arch=win32 ??_Distream_withassign@@QAEXXZ
 @ stub -arch=win64 ??_Distream_withassign@@QEAAXXZ
 @ stub -arch=win32 ??_Distrstream@@QAEXXZ
@@ -349,7 +349,7 @@
 @ stub -arch=win32 ??_Eifstream@@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
+@ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eofstream@@UAEPAXI at Z
@@ -367,7 +367,7 @@
 @ stub -arch=win32 ??_Gifstream@@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
+@ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gofstream@@UAEPAXI at Z
@@ -437,8 +437,8 @@
 @ cdecl -arch=win64 ?doallocate at streambuf@@MEAAHXZ(ptr) msvcirt.?doallocate at streambuf@@MEAAHXZ
 @ thiscall -arch=win32 ?doallocate at strstreambuf@@MAEHXZ(ptr) msvcirt.?doallocate at strstreambuf@@MAEHXZ
 @ cdecl -arch=win64 ?doallocate at strstreambuf@@MEAAHXZ(ptr) msvcirt.?doallocate at strstreambuf@@MEAAHXZ
-@ stub -arch=win32 ?eatwhite at istream@@QAEXXZ
-@ stub -arch=win64 ?eatwhite at istream@@QEAAXXZ
+@ thiscall -arch=win32 ?eatwhite at istream@@QAEXXZ(ptr) msvcirt.?eatwhite at istream@@QAEXXZ
+@ cdecl -arch=win64 ?eatwhite at istream@@QEAAXXZ(ptr) msvcirt.?eatwhite at istream@@QEAAXXZ
 @ thiscall -arch=win32 ?eback at streambuf@@IBEPADXZ(ptr) msvcirt.?eback at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?eback at streambuf@@IEBAPEADXZ(ptr) msvcirt.?eback at streambuf@@IEBAPEADXZ
 @ thiscall -arch=win32 ?ebuf at streambuf@@IBEPADXZ(ptr) msvcirt.?ebuf at streambuf@@IBEPADXZ
@@ -481,48 +481,48 @@
 @ cdecl -arch=win64 ?freeze at strstreambuf@@QEAAXH at Z(ptr long) msvcirt.?freeze at strstreambuf@@QEAAXH at Z
 @ thiscall -arch=win32 ?gbump at streambuf@@IAEXH at Z(ptr long) msvcirt.?gbump at streambuf@@IAEXH at Z
 @ cdecl -arch=win64 ?gbump at streambuf@@IEAAXH at Z(ptr long) msvcirt.?gbump at streambuf@@IEAAXH at Z
-@ stub -arch=win32 ?gcount at istream@@QBEHXZ
-@ stub -arch=win64 ?gcount at istream@@QEBAHXZ
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAC@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAC@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAE@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAE@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PACHD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEACHD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PADHD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEADHD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PAEHD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEAEHD@Z
-@ stub -arch=win32 ?get at istream@@QAEHXZ
-@ stub -arch=win64 ?get at istream@@QEAAHXZ
-@ stub -arch=win32 ?getdouble at istream@@AAEHPADH at Z
-@ stub -arch=win64 ?getdouble at istream@@AEAAHPEADH at Z
-@ stub -arch=win32 ?getint at istream@@AAEHPAD at Z
-@ stub -arch=win64 ?getint at istream@@AEAAHPEAD at Z
-@ stub -arch=win32 ?getline at istream@@QAEAAV1 at PACHD@Z
-@ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEACHD@Z
-@ stub -arch=win32 ?getline at istream@@QAEAAV1 at PADHD@Z
-@ 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
+@ thiscall -arch=win32 ?gcount at istream@@QBEHXZ(ptr) msvcirt.?gcount at istream@@QBEHXZ
+@ cdecl -arch=win64 ?gcount at istream@@QEBAHXZ(ptr) msvcirt.?gcount at istream@@QEBAHXZ
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAC@Z(ptr ptr) msvcirt.?get at istream@@QAEAAV1 at AAC@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAC@Z(ptr ptr) msvcirt.?get at istream@@QEAAAEAV1 at AEAC@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAD@Z(ptr ptr) msvcirt.?get at istream@@QAEAAV1 at AAD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAD@Z(ptr ptr) msvcirt.?get at istream@@QEAAAEAV1 at AEAD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAE@Z(ptr ptr) msvcirt.?get at istream@@QAEAAV1 at AAE@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAE@Z(ptr ptr) msvcirt.?get at istream@@QEAAAEAV1 at AEAE@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z(ptr ptr long) msvcirt.?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z(ptr ptr long) msvcirt.?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PACHD@Z(ptr ptr long long) msvcirt.?get at istream@@QAEAAV1 at PACHD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEACHD@Z(ptr ptr long long) msvcirt.?get at istream@@QEAAAEAV1 at PEACHD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PADHD@Z(ptr ptr long long) msvcirt.?get at istream@@QAEAAV1 at PADHD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEADHD@Z(ptr ptr long long) msvcirt.?get at istream@@QEAAAEAV1 at PEADHD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PAEHD@Z(ptr ptr long long) msvcirt.?get at istream@@QAEAAV1 at PAEHD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEAEHD@Z(ptr ptr long long) msvcirt.?get at istream@@QEAAAEAV1 at PEAEHD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEHXZ(ptr) msvcirt.?get at istream@@QAEHXZ
+@ cdecl -arch=win64 ?get at istream@@QEAAHXZ(ptr) msvcirt.?get at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?getdouble at istream@@AAEHPADH at Z(ptr ptr long) msvcirt.?getdouble at istream@@AAEHPADH at Z
+@ cdecl -arch=win64 ?getdouble at istream@@AEAAHPEADH at Z(ptr ptr long) msvcirt.?getdouble at istream@@AEAAHPEADH at Z
+@ thiscall -arch=win32 ?getint at istream@@AAEHPAD at Z(ptr ptr) msvcirt.?getint at istream@@AAEHPAD at Z
+@ cdecl -arch=win64 ?getint at istream@@AEAAHPEAD at Z(ptr ptr) msvcirt.?getint at istream@@AEAAHPEAD at Z
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PACHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QAEAAV1 at PACHD@Z
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEACHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QEAAAEAV1 at PEACHD@Z
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PADHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QAEAAV1 at PADHD@Z
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEADHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QEAAAEAV1 at PEADHD@Z
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PAEHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QAEAAV1 at PAEHD@Z
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEAEHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QEAAAEAV1 at PEAEHD@Z
 @ 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
 @ 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 ?ignore at istream@@QAEAAV1 at HH@Z(ptr long long) msvcirt.?ignore at istream@@QAEAAV1 at HH@Z
+@ cdecl -arch=win64 ?ignore at istream@@QEAAAEAV1 at HH@Z(ptr long long) msvcirt.?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
 @ 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
+@ thiscall -arch=win32 ?ipfx at istream@@QAEHH at Z(ptr long) msvcirt.?ipfx at istream@@QAEHH at Z
+@ cdecl -arch=win64 ?ipfx at istream@@QEAAHH at Z(ptr long) msvcirt.?ipfx at istream@@QEAAHH at Z
 @ thiscall -arch=win32 ?is_open at filebuf@@QBEHXZ(ptr) msvcirt.?is_open at filebuf@@QBEHXZ
 @ cdecl -arch=win64 ?is_open at filebuf@@QEBAHXZ(ptr) msvcirt.?is_open at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?is_open at fstream@@QBEHXZ
@@ -531,8 +531,8 @@
 @ stub -arch=win64 ?is_open at ifstream@@QEBAHXZ
 @ stub -arch=win32 ?is_open at ofstream@@QBEHXZ
 @ stub -arch=win64 ?is_open at ofstream@@QEBAHXZ
-@ stub -arch=win32 ?isfx at istream@@QAEXXZ
-@ stub -arch=win64 ?isfx at istream@@QEAAXXZ
+@ thiscall -arch=win32 ?isfx at istream@@QAEXXZ(ptr) msvcirt.?isfx at istream@@QAEXXZ
+@ cdecl -arch=win64 ?isfx at istream@@QEAAXXZ(ptr) msvcirt.?isfx at istream@@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
@@ -581,8 +581,8 @@
 @ stub -arch=win64 ?pcount at ostrstream@@QEBAHXZ
 @ stub -arch=win32 ?pcount at strstream@@QBEHXZ
 @ stub -arch=win64 ?pcount at strstream@@QEBAHXZ
-@ stub -arch=win32 ?peek at istream@@QAEHXZ
-@ stub -arch=win64 ?peek at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?peek at istream@@QAEHXZ(ptr) msvcirt.?peek at istream@@QAEHXZ
+@ cdecl -arch=win64 ?peek at istream@@QEAAHXZ(ptr) msvcirt.?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
 @ thiscall -arch=win32 ?precision at ios@@QAEHH at Z(ptr long) msvcirt.?precision at ios@@QAEHH at Z
@@ -595,8 +595,8 @@
 @ cdecl -arch=win64 ?put at ostream@@QEAAAEAV1 at D@Z(ptr long) msvcirt.?put at ostream@@QEAAAEAV1 at D@Z
 @ thiscall -arch=win32 ?put at ostream@@QAEAAV1 at E@Z(ptr long) msvcirt.?put at ostream@@QAEAAV1 at E@Z
 @ cdecl -arch=win64 ?put at ostream@@QEAAAEAV1 at E@Z(ptr long) msvcirt.?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
+@ thiscall -arch=win32 ?putback at istream@@QAEAAV1 at D@Z(ptr long) msvcirt.?putback at istream@@QAEAAV1 at D@Z
+@ cdecl -arch=win64 ?putback at istream@@QEAAAEAV1 at D@Z(ptr long) msvcirt.?putback at istream@@QEAAAEAV1 at D@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
@@ -617,18 +617,18 @@
 @ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
 @ 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
-@ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEADH@Z
-@ stub -arch=win32 ?read at istream@@QAEAAV1 at PAEH@Z
-@ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEAEH@Z
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PACH@Z
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEACH@Z(ptr ptr long) msvcirt.?read at istream@@QEAAAEAV1 at PEACH@Z
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PADH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PADH@Z
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEADH@Z(ptr ptr long) msvcirt.?read at istream@@QEAAAEAV1 at PEADH@Z
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PAEH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PAEH@Z
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEAEH@Z(ptr ptr long) msvcirt.?read at istream@@QEAAAEAV1 at PEAEH@Z
 @ thiscall -arch=win32 ?sbumpc at streambuf@@QAEHXZ(ptr) msvcirt.?sbumpc at streambuf@@QAEHXZ
 @ cdecl -arch=win64 ?sbumpc at streambuf@@QEAAHXZ(ptr) msvcirt.?sbumpc at streambuf@@QEAAHXZ
-@ stub -arch=win32 ?seekg at istream@@QAEAAV1 at J@Z
-@ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z
-@ stub -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z
-@ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
+@ thiscall -arch=win32 ?seekg at istream@@QAEAAV1 at J@Z(ptr long) msvcirt.?seekg at istream@@QAEAAV1 at J@Z
+@ cdecl -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z(ptr long) msvcirt.?seekg at istream@@QEAAAEAV1 at J@Z
+@ thiscall -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z(ptr ptr long) msvcirt.?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z
+@ cdecl -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z(ptr ptr long) msvcirt.?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
 @ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
 @ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
@@ -711,8 +711,8 @@
 # @ extern ?sunk_with_stdio at ios@@0HA
 @ thiscall -arch=win32 ?sync at filebuf@@UAEHXZ(ptr) msvcirt.?sync at filebuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) msvcirt.?sync at filebuf@@UEAAHXZ
-@ stub -arch=win32 ?sync at istream@@QAEHXZ
-@ stub -arch=win64 ?sync at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?sync at istream@@QAEHXZ(ptr) msvcirt.?sync at istream@@QAEHXZ
+@ cdecl -arch=win64 ?sync at istream@@QEAAHXZ(ptr) msvcirt.?sync at istream@@QEAAHXZ
 @ thiscall -arch=win32 ?sync at stdiobuf@@UAEHXZ(ptr) msvcirt.?sync at stdiobuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at stdiobuf@@UEAAHXZ(ptr) msvcirt.?sync at stdiobuf@@UEAAHXZ
 @ thiscall -arch=win32 ?sync at streambuf@@UAEHXZ(ptr) msvcirt.?sync at streambuf@@UAEHXZ
@@ -720,8 +720,8 @@
 @ thiscall -arch=win32 ?sync at strstreambuf@@UAEHXZ(ptr) msvcirt.?sync at strstreambuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at strstreambuf@@UEAAHXZ(ptr) msvcirt.?sync at strstreambuf@@UEAAHXZ
 @ 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
+@ thiscall -arch=win32 ?tellg at istream@@QAEJXZ(ptr) msvcirt.?tellg at istream@@QAEJXZ
+@ cdecl -arch=win64 ?tellg at istream@@QEAAJXZ(ptr) msvcirt.?tellg at istream@@QEAAJXZ
 @ thiscall -arch=win32 ?tellp at ostream@@QAEJXZ(ptr) msvcirt.?tellp at ostream@@QAEJXZ
 @ cdecl -arch=win64 ?tellp at ostream@@QEAAJXZ(ptr) msvcirt.?tellp at ostream@@QEAAJXZ
 @ cdecl ?terminate@@YAXXZ() msvcrt.?terminate@@YAXXZ
@@ -762,8 +762,8 @@
 @ cdecl -arch=win64 ?write at ostream@@QEAAAEAV1 at PEBEH@Z(ptr str long) msvcirt.?write at ostream@@QEAAAEAV1 at PEBEH@Z
 @ thiscall -arch=win32 ?writepad at ostream@@AAEAAV1 at PBD0@Z(ptr str str) msvcirt.?writepad at ostream@@AAEAAV1 at PBD0@Z
 @ cdecl -arch=win64 ?writepad at ostream@@AEAAAEAV1 at PEBD0@Z(ptr str str) msvcirt.?writepad at ostream@@AEAAAEAV1 at PEBD0@Z
-@ stub -arch=win32 ?ws@@YAAAVistream@@AAV1@@Z
-@ stub -arch=win64 ?ws@@YAAEAVistream@@AEAV1@@Z
+@ cdecl -arch=win32 ?ws@@YAAAVistream@@AAV1@@Z(ptr) msvcirt.?ws@@YAAAVistream@@AAV1@@Z
+@ cdecl -arch=win64 ?ws@@YAAEAVistream@@AEAV1@@Z(ptr) msvcirt.?ws@@YAAEAVistream@@AEAV1@@Z
 @ extern ?x_curindex at ios@@0HA msvcirt.?x_curindex at ios@@0HA
 @ extern ?x_lockc at ios@@0U_CRT_CRITICAL_SECTION@@A msvcirt.?x_lockc at ios@@0U_CRT_CRITICAL_SECTION@@A
 @ extern ?x_maxbit at ios@@0JA msvcirt.?x_maxbit at ios@@0JA
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index 6aa92ee..ad49412 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -60,12 +60,12 @@
 @ stub -arch=win64 ??0iostream@@IEAA at XZ
 @ stub -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z
 @ stub -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??0istream@@IAE at ABV0@@Z
-@ stub -arch=win64 ??0istream@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0istream@@IAE at XZ
-@ stub -arch=win64 ??0istream@@IEAA at XZ
-@ stub -arch=win32 ??0istream@@QAE at PAVstreambuf@@@Z
-@ stub -arch=win64 ??0istream@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0istream@@IAE at ABV0@@Z(ptr ptr long) msvcirt.??0istream@@IAE at ABV0@@Z
+@ cdecl -arch=win64 ??0istream@@IEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0istream@@IEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0istream@@IAE at XZ(ptr long) msvcirt.??0istream@@IAE at XZ
+@ cdecl -arch=win64 ??0istream@@IEAA at XZ(ptr long) msvcirt.??0istream@@IEAA at XZ
+@ thiscall -arch=win32 ??0istream@@QAE at PAVstreambuf@@@Z(ptr ptr long) msvcirt.??0istream@@QAE at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??0istream@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) msvcirt.??0istream@@QEAA at PEAVstreambuf@@@Z
 @ stub -arch=win32 ??0istream_withassign@@QAE at ABV0@@Z
 @ stub -arch=win64 ??0istream_withassign@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0istream_withassign@@QAE at PAVstreambuf@@@Z
@@ -160,8 +160,8 @@
 @ cdecl -arch=win64 ??1ios@@UEAA at XZ(ptr) msvcirt.??1ios@@UEAA at XZ
 @ stub -arch=win32 ??1iostream@@UAE at XZ
 @ stub -arch=win64 ??1iostream@@UEAA at XZ
-@ stub -arch=win32 ??1istream@@UAE at XZ
-@ stub -arch=win64 ??1istream@@UEAA at XZ
+@ thiscall -arch=win32 ??1istream@@UAE at XZ(ptr) msvcirt.??1istream@@UAE at XZ
+@ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) msvcirt.??1istream@@UEAA at XZ
 @ stub -arch=win32 ??1istream_withassign@@UAE at XZ
 @ stub -arch=win64 ??1istream_withassign@@UEAA at XZ
 @ stub -arch=win32 ??1istrstream@@UAE at XZ
@@ -214,10 +214,10 @@
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
 @ stub -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z
-@ stub -arch=win64 ??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4istream@@IEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream@@IEAAAEAV0 at PEAVstreambuf@@@Z
 @ stub -arch=win32 ??4istream_withassign@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4istream_withassign@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4istream_withassign@@QAEAAVistream@@ABV1@@Z
@@ -343,7 +343,7 @@
 # @ extern ??_7ifstream@@6B@
 @ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
 # @ extern ??_7iostream@@6B@
-# @ extern ??_7istream@@6B@
+@ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
 # @ extern ??_7istream_withassign@@6B@
 # @ extern ??_7istrstream@@6B@
 @ extern ??_7logic_error@@6B@ msvcirt.??_7logic_error@@6B@
@@ -361,7 +361,7 @@
 # @ extern ??_8ifstream@@7B@
 # @ extern ??_8iostream@@7Bistream@@@
 # @ extern ??_8iostream@@7Bostream@@@
-# @ extern ??_8istream@@7B@
+@ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
 # @ extern ??_8istream_withassign@@7B@
 # @ extern ??_8istrstream@@7B@
 # @ extern ??_8ofstream@@7B@
@@ -378,8 +378,8 @@
 @ stub -arch=win64 ??_Difstream@@QEAAXXZ
 @ stub -arch=win32 ??_Diostream@@QAEXXZ
 @ stub -arch=win64 ??_Diostream@@QEAAXXZ
-@ stub -arch=win32 ??_Distream@@QAEXXZ
-@ stub -arch=win64 ??_Distream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) msvcirt.??_Distream@@QAEXXZ
+@ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) msvcirt.??_Distream@@QEAAXXZ
 @ stub -arch=win32 ??_Distream_withassign@@QAEXXZ
 @ stub -arch=win64 ??_Distream_withassign@@QEAAXXZ
 @ stub -arch=win32 ??_Distrstream@@QAEXXZ
@@ -406,7 +406,7 @@
 @ stub -arch=win32 ??_Eifstream@@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
+@ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Elogic_error@@UAEPAXI at Z(ptr long) msvcirt.??_Elogic_error@@UAEPAXI at Z
@@ -429,7 +429,7 @@
 @ stub -arch=win32 ??_Gifstream@@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
+@ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Glogic_error@@UAEPAXI at Z(ptr long) msvcirt.??_Glogic_error@@UAEPAXI at Z
@@ -502,8 +502,8 @@
 @ cdecl -arch=win64 ?doallocate at streambuf@@MEAAHXZ(ptr) msvcirt.?doallocate at streambuf@@MEAAHXZ
 @ thiscall -arch=win32 ?doallocate at strstreambuf@@MAEHXZ(ptr) msvcirt.?doallocate at strstreambuf@@MAEHXZ
 @ cdecl -arch=win64 ?doallocate at strstreambuf@@MEAAHXZ(ptr) msvcirt.?doallocate at strstreambuf@@MEAAHXZ
-@ stub -arch=win32 ?eatwhite at istream@@QAEXXZ
-@ stub -arch=win64 ?eatwhite at istream@@QEAAXXZ
+@ thiscall -arch=win32 ?eatwhite at istream@@QAEXXZ(ptr) msvcirt.?eatwhite at istream@@QAEXXZ
+@ cdecl -arch=win64 ?eatwhite at istream@@QEAAXXZ(ptr) msvcirt.?eatwhite at istream@@QEAAXXZ
 @ thiscall -arch=win32 ?eback at streambuf@@IBEPADXZ(ptr) msvcirt.?eback at streambuf@@IBEPADXZ
 @ cdecl -arch=win64 ?eback at streambuf@@IEBAPEADXZ(ptr) msvcirt.?eback at streambuf@@IEBAPEADXZ
 @ thiscall -arch=win32 ?ebuf at streambuf@@IBEPADXZ(ptr) msvcirt.?ebuf at streambuf@@IBEPADXZ
@@ -546,50 +546,50 @@
 @ cdecl -arch=win64 ?freeze at strstreambuf@@QEAAXH at Z(ptr long) msvcirt.?freeze at strstreambuf@@QEAAXH at Z
 @ thiscall -arch=win32 ?gbump at streambuf@@IAEXH at Z(ptr long) msvcirt.?gbump at streambuf@@IAEXH at Z
 @ cdecl -arch=win64 ?gbump at streambuf@@IEAAXH at Z(ptr long) msvcirt.?gbump at streambuf@@IEAAXH at Z
-@ stub -arch=win32 ?gcount at istream@@QBEHXZ
-@ stub -arch=win64 ?gcount at istream@@QEBAHXZ
-@ stub -arch=win32 ?get at istream@@IAEAAV1 at PADHH@Z
-@ stub -arch=win64 ?get at istream@@IEAAAEAV1 at PEADHH@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAC@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAC@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAE@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAE@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PACHD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEACHD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PADHD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEADHD@Z
-@ stub -arch=win32 ?get at istream@@QAEAAV1 at PAEHD@Z
-@ stub -arch=win64 ?get at istream@@QEAAAEAV1 at PEAEHD@Z
-@ stub -arch=win32 ?get at istream@@QAEHXZ
-@ stub -arch=win64 ?get at istream@@QEAAHXZ
-@ stub -arch=win32 ?getdouble at istream@@AAEHPADH at Z
-@ stub -arch=win64 ?getdouble at istream@@AEAAHPEADH at Z
-@ stub -arch=win32 ?getint at istream@@AAEHPAD at Z
-@ stub -arch=win64 ?getint at istream@@AEAAHPEAD at Z
-@ stub -arch=win32 ?getline at istream@@QAEAAV1 at PACHD@Z
-@ stub -arch=win64 ?getline at istream@@QEAAAEAV1 at PEACHD@Z
-@ stub -arch=win32 ?getline at istream@@QAEAAV1 at PADHD@Z
-@ 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
+@ thiscall -arch=win32 ?gcount at istream@@QBEHXZ(ptr) msvcirt.?gcount at istream@@QBEHXZ
+@ cdecl -arch=win64 ?gcount at istream@@QEBAHXZ(ptr) msvcirt.?gcount at istream@@QEBAHXZ
+@ thiscall -arch=win32 ?get at istream@@IAEAAV1 at PADHH@Z(ptr ptr long long) msvcirt.?get at istream@@IAEAAV1 at PADHH@Z
+@ cdecl -arch=win64 ?get at istream@@IEAAAEAV1 at PEADHH@Z(ptr ptr long long) msvcirt.?get at istream@@IEAAAEAV1 at PEADHH@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAC@Z(ptr ptr) msvcirt.?get at istream@@QAEAAV1 at AAC@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAC@Z(ptr ptr) msvcirt.?get at istream@@QEAAAEAV1 at AEAC@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAD@Z(ptr ptr) msvcirt.?get at istream@@QAEAAV1 at AAD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAD@Z(ptr ptr) msvcirt.?get at istream@@QEAAAEAV1 at AEAD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAE@Z(ptr ptr) msvcirt.?get at istream@@QAEAAV1 at AAE@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAE@Z(ptr ptr) msvcirt.?get at istream@@QEAAAEAV1 at AEAE@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z(ptr ptr long) msvcirt.?get at istream@@QAEAAV1 at AAVstreambuf@@D at Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z(ptr ptr long) msvcirt.?get at istream@@QEAAAEAV1 at AEAVstreambuf@@D at Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PACHD@Z(ptr ptr long long) msvcirt.?get at istream@@QAEAAV1 at PACHD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEACHD@Z(ptr ptr long long) msvcirt.?get at istream@@QEAAAEAV1 at PEACHD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PADHD@Z(ptr ptr long long) msvcirt.?get at istream@@QAEAAV1 at PADHD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEADHD@Z(ptr ptr long long) msvcirt.?get at istream@@QEAAAEAV1 at PEADHD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEAAV1 at PAEHD@Z(ptr ptr long long) msvcirt.?get at istream@@QAEAAV1 at PAEHD@Z
+@ cdecl -arch=win64 ?get at istream@@QEAAAEAV1 at PEAEHD@Z(ptr ptr long long) msvcirt.?get at istream@@QEAAAEAV1 at PEAEHD@Z
+@ thiscall -arch=win32 ?get at istream@@QAEHXZ(ptr) msvcirt.?get at istream@@QAEHXZ
+@ cdecl -arch=win64 ?get at istream@@QEAAHXZ(ptr) msvcirt.?get at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?getdouble at istream@@AAEHPADH at Z(ptr ptr long) msvcirt.?getdouble at istream@@AAEHPADH at Z
+@ cdecl -arch=win64 ?getdouble at istream@@AEAAHPEADH at Z(ptr ptr long) msvcirt.?getdouble at istream@@AEAAHPEADH at Z
+@ thiscall -arch=win32 ?getint at istream@@AAEHPAD at Z(ptr ptr) msvcirt.?getint at istream@@AAEHPAD at Z
+@ cdecl -arch=win64 ?getint at istream@@AEAAHPEAD at Z(ptr ptr) msvcirt.?getint at istream@@AEAAHPEAD at Z
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PACHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QAEAAV1 at PACHD@Z
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEACHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QEAAAEAV1 at PEACHD@Z
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PADHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QAEAAV1 at PADHD@Z
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEADHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QEAAAEAV1 at PEADHD@Z
+@ thiscall -arch=win32 ?getline at istream@@QAEAAV1 at PAEHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QAEAAV1 at PAEHD@Z
+@ cdecl -arch=win64 ?getline at istream@@QEAAAEAV1 at PEAEHD@Z(ptr ptr long long) msvcirt.?getline at istream@@QEAAAEAV1 at PEAEHD@Z
 @ 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
 @ 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 ?ignore at istream@@QAEAAV1 at HH@Z(ptr long long) msvcirt.?ignore at istream@@QAEAAV1 at HH@Z
+@ cdecl -arch=win64 ?ignore at istream@@QEAAAEAV1 at HH@Z(ptr long long) msvcirt.?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
 @ 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
+@ thiscall -arch=win32 ?ipfx at istream@@QAEHH at Z(ptr long) msvcirt.?ipfx at istream@@QAEHH at Z
+@ cdecl -arch=win64 ?ipfx at istream@@QEAAHH at Z(ptr long) msvcirt.?ipfx at istream@@QEAAHH at Z
 @ thiscall -arch=win32 ?is_open at filebuf@@QBEHXZ(ptr) msvcirt.?is_open at filebuf@@QBEHXZ
 @ cdecl -arch=win64 ?is_open at filebuf@@QEBAHXZ(ptr) msvcirt.?is_open at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?is_open at fstream@@QBEHXZ
@@ -598,8 +598,8 @@
 @ stub -arch=win64 ?is_open at ifstream@@QEBAHXZ
 @ stub -arch=win32 ?is_open at ofstream@@QBEHXZ
 @ stub -arch=win64 ?is_open at ofstream@@QEBAHXZ
-@ stub -arch=win32 ?isfx at istream@@QAEXXZ
-@ stub -arch=win64 ?isfx at istream@@QEAAXXZ
+@ thiscall -arch=win32 ?isfx at istream@@QAEXXZ(ptr) msvcirt.?isfx at istream@@QAEXXZ
+@ cdecl -arch=win64 ?isfx at istream@@QEAAXXZ(ptr) msvcirt.?isfx at istream@@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
@@ -650,8 +650,8 @@
 @ stub -arch=win64 ?pcount at ostrstream@@QEBAHXZ
 @ stub -arch=win32 ?pcount at strstream@@QBEHXZ
 @ stub -arch=win64 ?pcount at strstream@@QEBAHXZ
-@ stub -arch=win32 ?peek at istream@@QAEHXZ
-@ stub -arch=win64 ?peek at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?peek at istream@@QAEHXZ(ptr) msvcirt.?peek at istream@@QAEHXZ
+@ cdecl -arch=win64 ?peek at istream@@QEAAHXZ(ptr) msvcirt.?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
 @ thiscall -arch=win32 ?precision at ios@@QAEHH at Z(ptr long) msvcirt.?precision at ios@@QAEHH at Z
@@ -664,8 +664,8 @@
 @ cdecl -arch=win64 ?put at ostream@@QEAAAEAV1 at D@Z(ptr long) msvcirt.?put at ostream@@QEAAAEAV1 at D@Z
 @ thiscall -arch=win32 ?put at ostream@@QAEAAV1 at E@Z(ptr long) msvcirt.?put at ostream@@QAEAAV1 at E@Z
 @ cdecl -arch=win64 ?put at ostream@@QEAAAEAV1 at E@Z(ptr long) msvcirt.?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
+@ thiscall -arch=win32 ?putback at istream@@QAEAAV1 at D@Z(ptr long) msvcirt.?putback at istream@@QAEAAV1 at D@Z
+@ cdecl -arch=win64 ?putback at istream@@QEAAAEAV1 at D@Z(ptr long) msvcirt.?putback at istream@@QEAAAEAV1 at D@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
@@ -688,18 +688,18 @@
 @ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
 @ 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
-@ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEADH@Z
-@ stub -arch=win32 ?read at istream@@QAEAAV1 at PAEH@Z
-@ stub -arch=win64 ?read at istream@@QEAAAEAV1 at PEAEH@Z
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PACH@Z
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEACH@Z(ptr ptr long) msvcirt.?read at istream@@QEAAAEAV1 at PEACH@Z
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PADH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PADH@Z
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEADH@Z(ptr ptr long) msvcirt.?read at istream@@QEAAAEAV1 at PEADH@Z
+@ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PAEH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PAEH@Z
+@ cdecl -arch=win64 ?read at istream@@QEAAAEAV1 at PEAEH@Z(ptr ptr long) msvcirt.?read at istream@@QEAAAEAV1 at PEAEH@Z
 @ thiscall -arch=win32 ?sbumpc at streambuf@@QAEHXZ(ptr) msvcirt.?sbumpc at streambuf@@QAEHXZ
 @ cdecl -arch=win64 ?sbumpc at streambuf@@QEAAHXZ(ptr) msvcirt.?sbumpc at streambuf@@QEAAHXZ
-@ stub -arch=win32 ?seekg at istream@@QAEAAV1 at J@Z
-@ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z
-@ stub -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z
-@ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
+@ thiscall -arch=win32 ?seekg at istream@@QAEAAV1 at J@Z(ptr long) msvcirt.?seekg at istream@@QAEAAV1 at J@Z
+@ cdecl -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z(ptr long) msvcirt.?seekg at istream@@QEAAAEAV1 at J@Z
+@ thiscall -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z(ptr ptr long) msvcirt.?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z
+@ cdecl -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z(ptr ptr long) msvcirt.?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
 @ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
 @ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
@@ -783,8 +783,8 @@
 # @ extern ?sunk_with_stdio at ios@@0HA
 @ thiscall -arch=win32 ?sync at filebuf@@UAEHXZ(ptr) msvcirt.?sync at filebuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) msvcirt.?sync at filebuf@@UEAAHXZ
-@ stub -arch=win32 ?sync at istream@@QAEHXZ
-@ stub -arch=win64 ?sync at istream@@QEAAHXZ
+@ thiscall -arch=win32 ?sync at istream@@QAEHXZ(ptr) msvcirt.?sync at istream@@QAEHXZ
+@ cdecl -arch=win64 ?sync at istream@@QEAAHXZ(ptr) msvcirt.?sync at istream@@QEAAHXZ
 @ thiscall -arch=win32 ?sync at stdiobuf@@UAEHXZ(ptr) msvcirt.?sync at stdiobuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at stdiobuf@@UEAAHXZ(ptr) msvcirt.?sync at stdiobuf@@UEAAHXZ
 @ thiscall -arch=win32 ?sync at streambuf@@UAEHXZ(ptr) msvcirt.?sync at streambuf@@UAEHXZ
@@ -792,8 +792,8 @@
 @ thiscall -arch=win32 ?sync at strstreambuf@@UAEHXZ(ptr) msvcirt.?sync at strstreambuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at strstreambuf@@UEAAHXZ(ptr) msvcirt.?sync at strstreambuf@@UEAAHXZ
 @ 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
+@ thiscall -arch=win32 ?tellg at istream@@QAEJXZ(ptr) msvcirt.?tellg at istream@@QAEJXZ
+@ cdecl -arch=win64 ?tellg at istream@@QEAAJXZ(ptr) msvcirt.?tellg at istream@@QEAAJXZ
 @ thiscall -arch=win32 ?tellp at ostream@@QAEJXZ(ptr) msvcirt.?tellp at ostream@@QAEJXZ
 @ cdecl -arch=win64 ?tellp at ostream@@QEAAJXZ(ptr) msvcirt.?tellp at ostream@@QEAAJXZ
 @ cdecl ?terminate@@YAXXZ() msvcrt.?terminate@@YAXXZ
@@ -836,8 +836,8 @@
 @ cdecl -arch=win64 ?write at ostream@@QEAAAEAV1 at PEBEH@Z(ptr str long) msvcirt.?write at ostream@@QEAAAEAV1 at PEBEH@Z
 @ thiscall -arch=win32 ?writepad at ostream@@AAEAAV1 at PBD0@Z(ptr str str) msvcirt.?writepad at ostream@@AAEAAV1 at PBD0@Z
 @ cdecl -arch=win64 ?writepad at ostream@@AEAAAEAV1 at PEBD0@Z(ptr str str) msvcirt.?writepad at ostream@@AEAAAEAV1 at PEBD0@Z
-@ stub -arch=win32 ?ws@@YAAAVistream@@AAV1@@Z
-@ stub -arch=win64 ?ws@@YAAEAVistream@@AEAV1@@Z
+@ cdecl -arch=win32 ?ws@@YAAAVistream@@AAV1@@Z(ptr) msvcirt.?ws@@YAAAVistream@@AAV1@@Z
+@ cdecl -arch=win64 ?ws@@YAAEAVistream@@AEAV1@@Z(ptr) msvcirt.?ws@@YAAEAVistream@@AEAV1@@Z
 @ extern ?x_curindex at ios@@0HA msvcirt.?x_curindex at ios@@0HA
 @ extern ?x_lockc at ios@@0U_CRT_CRITICAL_SECTION@@A msvcirt.?x_lockc at ios@@0U_CRT_CRITICAL_SECTION@@A
 @ extern ?x_maxbit at ios@@0JA msvcirt.?x_maxbit at ios@@0JA
-- 
2.7.4




More information about the wine-patches mailing list